int main() { if(fork()) { printf("i am child\n"); while(1); }else { printf("i am parent\n"); return 0; } return 0; }我这个程序为什么不是孤儿进程而是僵尸进程
时间: 2024-03-08 14:45:22 浏览: 111
实验五进程通信(1).pdf
这个程序中,父进程调用了fork()函数创建了一个子进程。由于父进程没有调用wait()或waitpid()函数来等待子进程结束并回收子进程的资源,因此子进程会成为一个僵尸进程。
但是,这个程序中父进程没有退出,它一直在运行,而子进程是一个死循环,也没有退出。因此,这个程序不会产生孤儿进程。
要避免子进程成为僵尸进程,可以在父进程中调用wait()或waitpid()函数来等待子进程结束并回收子进程的资源。或者可以通过在子进程中调用exit()函数来结束子进程的执行,这样父进程在调用wait()或waitpid()函数时就能够正确地回收子进程的资源。
阅读全文