免费注册 查看新帖 |

Chinaunix

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

unix环境编程里面的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-13 11:30 |只看该作者 |倒序浏览
int
main()
{
    int var=1;
    char buff[]="input to terminal";
    pid_t pid;
    if(write(STDOUT_FILENO,buff,sizeof(buff)-1)<0){
       printf("write error";
       exit(0);
  }
    printf("before vfork";
    if((pid=vfork())<0)
       printf("fork error";
    else if(pid==0){
       var++;
       exit(0);
  }


    printf("pid=%d,var=%d",getpid(),var);
    exit(0);
     
}
照书上说的结果应该是
:before vfork
可是我的结果却是
:before vfork
pid=3472,var=2
哪位看过这本书的,帮忙解释一下...

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

unix环境编程里面的问题

书上的结果是什么?
这个结果没有错误啊。

论坛徽章:
0
3 [报告]
发表于 2004-10-13 12:54 |只看该作者

unix环境编程里面的问题

书上说_exit()不刷新标准io,但是exit()all open streams are flushed,其中也包括标准输出了,

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-10-13 13:06 |只看该作者

unix环境编程里面的问题

对啊,那又有什么问题吗?

论坛徽章:
0
5 [报告]
发表于 2004-10-13 14:04 |只看该作者

unix环境编程里面的问题

原帖由 "angelarrive" 发表:
to terminal";
    pid_t pid;
    if(write(STDOUT_FILENO,buff,sizeof(buff)-1)<0){
       printf("write error";
       exit(0);
  }
    printf("before vfork";
    if((pid=vfork())<0)
  ..........


将后面的两个exit()改为_exit()就是你想要的结果了!

论坛徽章:
0
6 [报告]
发表于 2004-10-13 19:02 |只看该作者

unix环境编程里面的问题

或者改为_Exit()也可以,这些函数不一样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP