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( ) 或者 waitpid( ) 阻塞父进程,等待子进程自己退出后给子进程收尸;或者在子进程中注册一个信号响应,响应动作为退出进程,然后在父进程要退出时,给子进程发送信号,然后等待子进程退出后收尸。
相关API:
wait( )
signal( )
exit( )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)