请教:创建守护进程的代码中,一句迷惑(没分了,实在抱歉):

benbenxiaoluchi 2008-10-13 01:21:40
int main(int argc,char * argv[])
{
......
......
BackGroundSvr();/*此方法创建守护进程*/
......
......
//main函数继续作很多处理
......

}


int BackGroundSvr( void )
{
pid_t pidSub;
pidSub = fork();
if ( pidSub<0 )
exit( 1 );
else if ( pidSub > 0 )
{
exit( 0 ); //请问在这句里面, exit(0)后,父进程不是退出了吗?? 为什么main函数在调用了BackGroundSvr后,下面还有很多处理的工作, 下面那些代码怎么能执行得到呢?? 难道exit后,main还能够继续往下运行。
}
else
{
setsid();
/*chdir( "/" );*/
umask( 0 );
}

return 0;
}

...全文
47 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbenxiaoluchi 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wlabing 的回复:]
fork后产生了两个进程,父进程与子进程.
...
else if(pidSub>0)
{
    exit(0);
}
...
这里退出的是父进程,而子进程仍然在运行.
你对fork还不太理解,应该看看fork函数相关知识.
[/Quote]

呵呵 我知道这里是父进程退出了。 但是这个fork是BackGroundSvr这个函数里面的。
而BackGroundSvr这个函数是 main()调用的。
现有的代码,main在调用了BackGroundSvr后,下面还做好多事情。
问题是 在BackGroundSvr 父进程exit了 ,那么main下面的工作,还会作吗?
wlabing 2008-10-13
  • 打赏
  • 举报
回复
fork后产生了两个进程,父进程与子进程.
...
else if(pidSub>0)
{
exit(0);
}
...
这里退出的是父进程,而子进程仍然在运行.
你对fork还不太理解,应该看看fork函数相关知识.

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧