问题描述
P
/ \
M M
| |
C C
解决方法
当您使用 fork()
时,kernel
将创建一个新进程,并将返回给子进程(新进程)0
,将 PID
返回给父进程。所以,知道这是下面的代码来创建树
if ((pid = fork()) == 0) {
//I am process M1
if (pid = form()) == 0) {
//I am process C1
}
} else {
// I am still in P,so go on the next branch
if ((pid = fork()) == 0) {
//I am process M2
if (pid = form()) == 0) {
//I am process C2
}
}
}
使用 ps --forest
可视化流程树,如下例所示
~# ps --forest
PID TTY TIME CMD
1295 pts/0 00:00:00 sudo
1296 pts/0 00:00:00 \_ su
1297 pts/0 00:00:01 \_ bash
3541 pts/0 00:00:00 \_ ps
所以你会看到类似的东西:
~# ps --forest
PID TTY TIME CMD
1295 pts/0 00:00:00 a.out
1296 pts/0 00:00:00 \_ a.out
1297 pts/0 00:00:00 \_ a.out
1298 pts/0 00:00:00 \_ a.out
1299 pts/0 00:00:00 \_ a.out
这将告诉您是否成功制作了这棵树。