免费注册 查看新帖 |

Chinaunix

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

fork的问题~~(函数内部fork子进程) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-09 10:47 |只看该作者 |倒序浏览
大概流程是这样的,我在main函数调用某个函数(do_pipe), 在do_pipe函数里面,我fork了一个子进程, 然后子进程里面执行execvp,并且把结果利用dup2重定向到管道的一端,然后从父进程从管道另一端接收数据作为输入。大致如下:

int do_pipe()
{
     pid_t pid;

    if(pid==0)

   {
       dup2();
       execvp();
      
   }

  else
   {
      wait();
       dup2();
      execvp;
   }

       return 0;
}
   
  此函数调用正确,也可以得出正确结果,但是每次执行完以后,整个程序就结束了,但是我还想回到main函数继续执行,怎么办呢?

论坛徽章:
0
2 [报告]
发表于 2008-11-09 15:50 |只看该作者

回复 #1 songna 的帖子

进程同步吧,让你的调用fork的进程等待你新建的进程执行完毕之后再执行

论坛徽章:
0
3 [报告]
发表于 2008-11-09 17:30 |只看该作者
进程间通信

论坛徽章:
0
4 [报告]
发表于 2008-11-10 02:31 |只看该作者

回复 #2 goldenhunter 的帖子

如何做呢?

我已经在父进程(else中)里面用wait了呀?

难道用错地方了麽?

论坛徽章:
0
5 [报告]
发表于 2008-11-10 13:48 |只看该作者
原帖由 songna 于 2008-11-10 02:31 发表
如何做呢?

我已经在父进程(else中)里面用wait了呀?

难道用错地方了麽?

你的代码有问题。把代码贴全了啊?unix shell的实现也是fork(),exec命令,父进程wait()。
去查查the design of the unix operating system

[ 本帖最后由 fera 于 2008-11-10 14:03 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-11-10 18:28 |只看该作者
用个while循环阿,APUE内有类似的例子。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP