首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

进程休眠(附程序)解决办法

2012-04-06 
进程休眠(附程序)main(){pid_tpidif((pidfork()) 0)printf( forkerror\r\n )elseif(pid0){while(1

进程休眠(附程序)
main()
{
      pid_t   pid;
      if((pid=fork()) <0)
          printf( "fork   error\r\n ");
      else   if   (pid==0)
      {
            while(1)
            {
            printf( "ssss ");
            sleep(1);
            }
      }
      printf( "222 ");
}

为什么这个程序一直没有ssss输出呢,是不是我sleep的有问题?

[解决办法]
printf( "ssss\n ");
[解决办法]
主进程退出了,子进程跟着也退出了,所以没打出来.
你可以试着多运行几次,运气好的话可看见打出ssss来。
和os的进程调度有关。
在printf( "222 ")后面加个getchar();
就能一直打ssss了
[解决办法]
公用stdout缓冲区, 如果在终端输出则是行缓冲, 两个进程在缓冲区上发生竞态.
[解决办法]
楼上的都正解
如果要更好的理解的话,不光可以加 "\n "来换行刷新缓冲。也可以在printf( "ssss ")后面加一个fflush(stdout)来刷新缓冲区,同时把里面的内容打印到输出。
不过这个程序和进程休眠有什么很大的关系?sleep()?
[解决办法]
main()
{
pid_t pid;
if((pid=fork()) <0)
printf( "fork error\r\n ");
else if (pid==0)
{
while(1)
{
printf( "ssss ");
fflush(NULL);
sync();
sleep(1);
}
}
printf( "222 ");
sleep(5);
}

热点排行