当前位置: 技术问答>linux和unix
Linux下clone函数问题
来源: 互联网 发布时间:2015-10-31
本文导语: 问题描述如下: 1。 在主进程中fork()子进程 2。 在主进程中调用waitpid(WAIT_ANY,&status,0); 结果:主进程阻塞,正确 可当我使用clone替代fork后,waitpid会立刻返回,错误信息是'No client process'。而我用pstree查看,clone后的...
问题描述如下:
1。 在主进程中fork()子进程
2。 在主进程中调用waitpid(WAIT_ANY,&status,0);
结果:主进程阻塞,正确
可当我使用clone替代fork后,waitpid会立刻返回,错误信息是'No client process'。而我用pstree查看,clone后的进程与父进程确实是父子关系。
盼望高手指点,谢谢!
使用的内核版本是2.4
1。 在主进程中fork()子进程
2。 在主进程中调用waitpid(WAIT_ANY,&status,0);
结果:主进程阻塞,正确
可当我使用clone替代fork后,waitpid会立刻返回,错误信息是'No client process'。而我用pstree查看,clone后的进程与父进程确实是父子关系。
盼望高手指点,谢谢!
使用的内核版本是2.4
|
我觉得出错的地方大概是fork 和 clone 运行的具体代码,clone后的进程 等同于线程,共用的东西太多,包括文件描述符(不一定是共享创建),'No client process' 应该是socket 的报错,如果按线程的观点分析你的程序,兴许可以找出错误所在
|
是不是flags里面设了CLONE_PARENT, 把这个去掉,return的signal设成SIGCHLD。应该ok.