为什么在mac上执行ps -f时僵尸进程是不可见的?

时间:2017-01-02 13:42:47

标签: macos process fork zombie-process

鉴于此C程序:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void) {
    pid_t pid;
    if ((pid = fork()) >= 0) {
        if (pid == 0) {
            exit(0);
        } else {
            sleep(999);
        }
    }
    return 0;
}
跑完后

$ gcc -o zombie zombie.c
$ ./zombie &
$ ps -f 

仅显示父进程:

501 77474 74651   0  2:36PM ttys000    0:00.00 ./zombie

在Linux上,同一个程序显示了这个:

osboxes   6900  6835  0 13:37 pts/1    00:00:00 ./zombie
osboxes   6903  6900  0 13:37 pts/1    00:00:00 [zombie] <defunct>

现在,奇怪的是,在OSX上启动多个zombie程序时..

$ ./zombie &
$ ./zombie &
$ ps -f

..僵尸进程(括号内)显示:

501 77653 74651   0  2:39PM ttys000    0:00.00 ./zombie
501 77664 74651   0  2:39PM ttys000    0:00.00 ./zombie
501 77667 77664   0  2:39PM ttys000    0:00.00 (zombie)

原因是什么?

0 个答案:

没有答案