Вы можете попробовать это
#include<string.h>
#include <sys/types.h>
#include <unistd.h>
char str[50] = "ps -o pid --ppid ";
char ppid [7];
sprintf(ppid,"%d",getpid());
strcat(str,ppid);
system(str);
ПРИМЕЧАНИЕ. Этот фрагмент кода должен находиться в родительском процессе.
В основном ps -o pid --ppid <parent_id>
дает pid всех дочерних процессов, чей родитель имеет PID <parent_id>
. Теперь мы можем получить PID родительского процесса, используя getpid()
, который возвращает pid_t
и неявно преобразуется в целое число. sprintf()
преобразует его в строку, и мы объединяем результат с str
, чтобы получить полную команду, которая выполняется system()
.