当前位置:  技术问答>linux和unix

求助关于getpid(),getppid()的问题

    来源: 互联网  发布时间:2017-05-02

    本文导语:   1 #include   2 #include   3 #include   4    5 int main()   6 {   7     pid_t id;   8     id=fork();   9      if(id == -1) 10 { 11     perror("fujinchengdiaoyongshibai"); 12 } 13      if(id == 0) 14     { 15         printf("c...


 1 #include
  2 #include
  3 #include
  4 
  5 int main()
  6 {
  7     pid_t id;
  8     id=fork();
  9      if(id == -1)
10 {
11     perror("fujinchengdiaoyongshibai");
12 }
13      if(id == 0)
14     {
15         printf("child process id is %d,the father id is %d n",getpid(),getppid());
16     }
17 
18     if(id > 0)
19     {
20         printf("father process id is %d,the father father id is%dn",getpid(),getppid());
21     }
22     //  printf("PID = %dn",getpid());
23     //  printf("PPID = %dn",getppid());


为什么我得到的结果是呢?

father process id is 2531,the father father id is2335
child process id is 2532,the father id is 1 
父进程是2531,但是在子进程中得到的父进程却是1,按道理应该相等的,为什么不相等呢?

|
因为用fork函数创建子进程,父进程没有等待子进程的退出,这可能导致子进程编程孤儿进程,被init进程接管,所以父进程id为1

|
你可以采用vfork(),这样父进程会等待子进程退出,自身才会退出。上面的情况,是父进程先退出,子进程失去父进程,被init 1 进程(所有进程的父进程)收养

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求助


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,