免费注册 查看新帖 |

Chinaunix

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

关于进程间通信的问题。 [复制链接]

论坛徽章:
9
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58CU大牛徽章
日期:2013-04-17 11:50:25CU大牛徽章
日期:2013-04-17 11:50:33CU大牛徽章
日期:2013-04-17 11:50:39CU大牛徽章
日期:2013-04-17 11:50:44
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-23 11:25 |只看该作者 |倒序浏览
用apue书上14.3实现tell_wait的源程序。
自己的源代码如下:
main()
{
   pid_t pid;

   TELL_WAIT();

   if((pid=fork())<0)
      printf("fork error";
   else if(pid == 0)
   {
      WAIT_PARENT();
      printf("output from child\n";
   }
   else
   {
      printf("output from parent\n";
      TELL_CHILD(pid);
   }
   exit(0);
}

运行结果如下:
output from parent
[root@hostname]#output from child

请问如何使运行结果如下:
output from parent
output from child
[root@hostname]#
如能进行些理论指导甚佳!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-12-23 11:34 |只看该作者

关于进程间通信的问题。

搞清楚逻辑,你是要让子进程先结束
所以TELL_CHILD(换个名字?)和WAIT_PARENT要换个位置
pid的值也要重赋

论坛徽章:
9
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58CU大牛徽章
日期:2013-04-17 11:50:25CU大牛徽章
日期:2013-04-17 11:50:33CU大牛徽章
日期:2013-04-17 11:50:39CU大牛徽章
日期:2013-04-17 11:50:44
3 [报告]
发表于 2004-12-23 11:46 |只看该作者

关于进程间通信的问题。

逻辑上没有问题,我是要让父进程先执行,main主程序是apue书上p8.7程序照猫画虎的。现在问题的关键是,那个命令行提示符怎么插入到程序的输出中去了。有什么解决办法,使这个程序是原字操作,书上都是讲pv操作,可我这里就一个程序。

论坛徽章:
0
4 [报告]
发表于 2004-12-23 11:47 |只看该作者

关于进程间通信的问题。

原帖由 "lxl_018"]tname 发表:
#
如能进行些理论指导甚佳!

运行结果是正常的,父进程最先运行,随后是shell, 最后是子进程
子进程和shell的运行顺序取决于操作系统的调度,在应用程序中控制好像比较困难

论坛徽章:
0
5 [报告]
发表于 2004-12-23 12:01 |只看该作者

关于进程间通信的问题。

楼上说得很对,这只不过是主程序很出,而shell就运行了

论坛徽章:
9
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58CU大牛徽章
日期:2013-04-17 11:50:25CU大牛徽章
日期:2013-04-17 11:50:33CU大牛徽章
日期:2013-04-17 11:50:39CU大牛徽章
日期:2013-04-17 11:50:44
6 [报告]
发表于 2004-12-23 15:21 |只看该作者

关于进程间通信的问题。

如果用apue上10.17作tell_wait实现源程序的话,就不会出现这个问题.???我试了一下,程序输出结果是:
output from child
output from parent.
这个结果顺序是错误的,为什么?郁闷中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP