使用 system() 创建的 PID

使用 system() 创建的 PID

我是 ubuntu 新手。我正在创建一个程序,在单独的终端中打开 2/4/8 个新进程。使用 system()。如何使用另一个终端获取它们的 PID 或更改 nice 值?

答案1

一般来说pidof(8)在更复杂的情况下pgrep(1)是查找某些进程 ID 的优秀工具。

如果要查找特定进程的所有子进程,则需要/proc自己挖掘文件系统。假设您正在寻找进程 2345 的子进程:

for PROCSTAT in /proc/[0-9]*/stat; do
    read -r PID PROCNAME STATUS PPID TAIL < $PROCSTAT
    if [ $PPID -eq 2345 ]; then
        echo $PID
    fi
done

如果你选择使用

system("foobar");

代替

if (fork() == 0) {
    execlp("foobar", "foobar", NULL);
}

它实际上会产生两个进程:/bin/sh一个直接子进程和foobar一个孙进程。

相关内容