Печать pstree с использованием execlp () - PullRequest
0 голосов
/ 11 декабря 2018

Мне нужна помощь в печати дерева процесса прямо из кода.Благодаря сообществу stackoverflow я написал программу, которая создает несколько процессов, используя функцию 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);

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

...