免费注册 查看新帖 |

Chinaunix

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

子进程与sleep [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-25 13:11 |只看该作者 |倒序浏览
程序如下所示.
执行的结果,总是sleep for 2 second...child Exit!同时被打出来,而我想要的是, 先出现sleep for 2 second...,然后过2秒后出现child Exit.
   

  1. main(){
  2.         long int p;
  3.         long int i=2;
  4.         if ((p=fork())==0){                // child process
  5.                 printf("sleep for %d second...", i);
  6.                 sleep(i);
  7.                 printf("child Exit!\n");
  8.                 _exit(0);
  9.         } else if (p>;0){                // parent process
  10.                 wait();
  11.                 printf("parent Exit!\n");
  12.                 exit(0);
  13.         }
  14. }
复制代码

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

子进程与sleep


  1. main(){
  2.    long int p;
  3.    long int i=2;
  4.    if ((p=fork())==0){      // child process
  5.       printf("sleep for %d second...\n", i);
  6.       sleep(2);
  7.       printf("child Exit!\n");
  8.       _exit(0);
  9.    } else if (p>;0){      // parent process
  10.       wait();
  11.       printf("parent Exit!\n");
  12.       exit(0);
  13.    }
  14. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-06-25 13:44 |只看该作者

子进程与sleep

为什么加上回车就可以了?
另外,sleep中可以引用"i". 但我记得父子进程是不共享数据的.

论坛徽章:
0
4 [报告]
发表于 2003-06-25 13:55 |只看该作者

子进程与sleep

因为printf在遇到\n后才会写屏幕
当然可以使用fflush刷新

论坛徽章:
0
5 [报告]
发表于 2003-06-25 14:04 |只看该作者

子进程与sleep

的确,在子进程中是这样的.可是在父进程中把'\n'去掉,一样可以显示出来.而在子进程中如果没有'\n',那么整个字符串都不会显示.     

我又试了一下. 如果程序不结束,在父进程中也不打印,如你所说.
这个与windows下的c不一样吧.windows下面好像是"即时"打印.

论坛徽章:
0
6 [报告]
发表于 2003-06-25 14:38 |只看该作者

子进程与sleep

exit()时回自动刷新缓冲!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP