我是 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
一个孙进程。