Печать 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 *, а затем попробовать это.