- 论坛徽章:
- 0
|
原帖由 aitongqi017 于 2006-11-7 19:40 发表
我想问楼主一个问题,是不是每一个创建的子进程都必须在使用完,由父进程调用wait函数来的到该进程的终止状态,释放资源。
是不是必须的?
不是必须的。
如果你的程序不是一个守护程序或者父进程不需要获取子进程的终止状态。
你在父进程是完全没有必要必须wait子进程,来给子进程来收尸(释放资源)
这个工作可以交由由init进程来处理。
- #include<stdio.h>
- #include<unistd.h>
- int main()
- {
- int st;
- if( fork()==0 )
- {
- printf("children %d parent %d run..\n", getpid(), getppid());
- sleep(10);
- printf("children %d parent %d run..\n", getpid(), getppid());
- exit(1); //子进程结束
- }
- else
- {
- sleep(5);
- printf("Parent %d run finished..\n", getpid());
- exit(1);
- }
- return 0;
- }
复制代码
子进程的父进程如果先于子进程结束的话,那么该父进程的所有子进程将成为孤儿进程,将由init进程领养。
该父进程的所有子进程的父进程将变为init进程。子进程结束时由init进程为它们收尸(释放资源)。
所以不是必须的。 |
|