2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void)
{
pid_t pid
pid = fork()
if (pid <0) {
printf("fork error!\n")
exit(-1)
}
if (pid >0) {
printf("Parent. ppid(%d), pid(%d)\n", getppid(), getpid())
kill(pid, SIGKILL)
wait(NULL)
printf("Done\n")
} else {
printf("Child. ppid(%d), pid(%d)\n", getppid(), getpid())
sleep(3)
}
return 0
}
对的,不使用wait的情况下,父进程不主动去回收子进程的资源。一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。产生僵尸进程的原因:1、子进程结束后向父进程发出SIGCHLD信号,父进程默认忽略了它
2、父进程没有调用wait()或waitpid()函数来等待子进程的结束
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)