Печать pstree с использованием execlp()

Мне нужна помощь в печати дерева процесса прямо из кода. Благодаря сообществу stackru я написал программу, которая создает несколько процессов, используя функцию fork(), и теперь мне нужно распечатать на экране дерево процессов, используя функцию execlp().

int main()
{
    int t = 5;
    int mainPID = getpid();
    cout << "Main process: " << mainPID << endl << endl;

    int pid;
    if ((pid = fork()) == -1) return -1;
    if (pid == 0)
    {
        cout << "source for child process ";
    }
    else{
        cout << "source for parent process ";
    }
    sleep(t);
    return 0;
}

Пока я запускаю программу и на другом экземпляре типа терминала

pstree /mainPID/ 

Я получаю дерево, которое начинает печатать из mainPID. Мне нужно распечатать это дерево из кода, но когда положить в коде

execlp("pstree", "pstree", "-c", "-p", (int *)NULL);

Я получаю распечатанное дерево со всей системы

execlp("pstree", "pstree", mainPID, "-c", "-p", (int *)NULL);

ничего не печатает.

0 ответов

Execlp принимает char *const argv[] в качестве остальных аргументов...

Так что попробуйте преобразовать mainPID в char[]

В моем случае это сработало.

Вы должны преобразовать mainPID в строку или char *, а затем попробовать это.

Другие вопросы по тегам