请教一个关于fork的问题。

ckacka 2005-07-18 11:36:00
我用fork产生一个UI进程

if (!::fork())
{
::execv...
}

可以出子进程,运行正常。但是子进程退出产生zombie
如果改用

if (!::fork())
{
::execv...
}
::wait...

则看不到图形界面,但是进程列表里面有,而且很快就自动退出了,没有zombie。

请问这个问题怎么解决?
谢谢!
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lito_rat 2005-07-19
  • 打赏
  • 举报
回复
赞成楼上
yanghuajia 2005-07-19
  • 打赏
  • 举报
回复
感觉第二种方法应该没用
sharkhuang 2005-07-19
  • 打赏
  • 举报
回复
signal ( SIGCHLD ,SIGIGN )
ckacka 2005-07-19
  • 打赏
  • 举报
回复
自己顶一下,谁帮我解答一下?
loveleijuforever 2005-07-18
  • 打赏
  • 举报
回复
楼上正解
NC 2005-07-18
  • 打赏
  • 举报
回复
在父进程中调用signal ( SIGCHLD ,SIGIGN );
ckacka 2005-07-18
  • 打赏
  • 举报
回复
应该是 signal(SIGCLD, SIG_IGN);
或者是 signal(SIGCHLD, SIG_IGN);

还有别的方法么?
我在看一个系统的源代码,它使用的是

if ( !::vfork() )
{
for( int fd = 3; fd < 100; fd++ )
::close( fd );
::setpgid( ::getpgid(), ::getppid() );
::execv...
::execvp...
_exit(-1);
}

它没有任何其它清理子进程的操作。但是它却可以在子进程退出的时候使子进程不成为zombie。
请问为什么呢?
也恳请解释一下这段代码,我不大明白那个for循环,也不明白为什么使用了execv,还要使用execvp?

23,120

社区成员

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

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