免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2089 | 回复: 5
打印 上一主题 下一主题

父进程exit()之后子进程还在吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-13 11:50 |只看该作者 |倒序浏览
各位,我想用父进程创建五个子进程,然后父进程就退出,请问此时子进程还活着吗?还是跟父进程一块死掉了?谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-09-13 13:02 |只看该作者
现在哪有那么孝的孝子,放心,子进程还活着

论坛徽章:
0
3 [报告]
发表于 2006-09-13 19:21 |只看该作者
原帖由 blueeyes1004 于 2006-9-13 11:50 发表
各位,我想用父进程创建五个子进程,然后父进程就退出,请问此时子进程还活着吗?还是跟父进程一块死掉了?谢谢!


要把sigchld忽略才可以吧?

觉得不保险可以忽略所有类型的signal。

ncsa的ftp上有古老的NCSA HTTPd,其中有这样的例子。0.5版本的极其简单,但体现的是真真切切的*nix编程,建议你读一下。

[ 本帖最后由 langue 于 2006-9-13 19:22 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-09-13 22:47 |只看该作者
还在啊,当父进程在子进程之前退出子进程会被一个叫init(id为1)的进程收留,也就是成为它的子进程。

论坛徽章:
0
5 [报告]
发表于 2006-09-13 22:57 |只看该作者
给你个程序看看。
  1. #include <sys/types.h>
  2. #include <errno.h>
  3. #include <fcntl.h>
  4. #include <signal.h>

  5. static void sig_hup(int signo);
  6. static void pr_ids(char *name);

  7. int main()
  8. {
  9. char c;
  10. pid_t pid;

  11. pr_ids(“parent”);
  12. if((pid=fork())>0)
  13. {
  14.     sleep(1);
  15.     exit(0);
  16. }
  17. else
  18. {
  19.     pr_ids(“child”);
  20.     signal(SIGHUP,sig_hup);
  21.     kill(getpid(),SIGTSTP);
  22.     pr_ids(“child”);
  23.     if(read(0,&c,1)!=1)
  24.         printf(“read error from control terminal,errno=%d\n”,errno);
  25.     exit(0);
  26. }
  27. }

  28. static void sig_hup(int signo)
  29. {
  30. printf(“SIGHUP received,pid=%d\n”,getpid());
  31. rerutn;
  32. }

  33. static void pr_ids(char *name)
  34. {
  35. printf(“%s:pid=%d,ppid=%d.pgrp=%d\n”,name,getpid(),getppid(),getpgrp());
  36. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2006-09-14 08:57 |只看该作者
原帖由 blueeyes1004 于 2006-9-13 11:50 发表
各位,我想用父进程创建五个子进程,然后父进程就退出,请问此时子进程还活着吗?还是跟父进程一块死掉了?谢谢!


孤儿进程,init领养过去了……
类Unix的OS,都要保证一个进程都有父进程……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP