当前位置:  技术问答>linux和unix

一个简单却不知道为什么出错的程序(附源码)?

    来源: 互联网  发布时间:2015-11-10

    本文导语:  #include main() { int p1,p2;        //printf("p1=%d,p2=%dn",p1,p2);   带换行        //printf("p1=%d,p2=%d",p1,p2);  不带换行         while((p1=fork())==-1);         if(p1==0 putchar('b'); else{ while((p2=fork())==-1); if(p2==0) p...

#include
main()
{
int p1,p2;
       //printf("p1=%d,p2=%dn",p1,p2);   带换行
       //printf("p1=%d,p2=%d",p1,p2);  不带换行
        while((p1=fork())==-1);
        if(p1==0
putchar('b');
else{
while((p2=fork())==-1);
if(p2==0)
putchar('c');
else    putchar('a');
        }
}

在linux下编译,运行不带换行的printf,结果能正确的显示3次p1=...p2=....
而用带换行的那个printf,却只能显示1次p1=....p2=
这是怎么回事?

|
默认情况下标准输出是行缓冲的,就是说直到一行结束时缓冲区内容才全部显示到屏幕上。带换行的时候,printf("p1=%d,p2=%dn",p1,p2); 执行完屏幕上就有输出,缓冲区也清空了,所以三个进程显示1次p1=....p2=。。。后面跟abc(出现顺序是任意的),
printf("p1=%d,p2=%d",p1,p2);执行完屏幕上没有输出,缓冲区非空,存放着将要输出的内容,fork完后父子进程将有同样的输出缓冲区,当进程结束后会刷新,所以将有三个p1=....p2=。。。而且每个后面跟abc其中之一,顺序也是任意的。

|
在fork前用scanf读入数据,看看子进程是否会再次等待输入,OK?

    
 
 

您可能感兴趣的文章:

  • 一JSP网站,统一指定一个errorPage页面,统一处理异常,在指定的errorPage页面中,我想知道具体是哪个页面出错的,即想知道出错页面的具
  • 安装freeBSD出错了,不知道什么原因。
  • make install出错,不知道怎么回事.
  • chroot出错,知道的请进,不甚感激
  • 我知道各位都会,说了一定给分:为什么"using namespace std;"出错?
  • linux下安装oracle出错啦!!!不知道怎么解决,帮忙看看好吗?
  • 关于equals的问题!!怪得很!!不知道为何出错!!请大虾指教~!!
  • 不知道怎么分析java出错信息,请高手指点!!!
  • ubuntu 安装libpcap的时候出错 求大神知道
  • 编译2.6内核出错,不知道为什么pci编译不过去!
  • 安装gtkmm的出错,不知道该怎么解决了
  • APUE 有关exec() Functions的程序出错,不知道为什么?!
  • 程序出错,但不知道原因,各位看一下
  • 简单的hello world module,不知道怎么一直编译出错,谢谢
  • 我看到在gcc的帮助文档可以编译java文件,我试了可以编译,但出错,不知道为什么.
  • 编译fontconfig的时候出错了,make的时候出错了,不知道该怎么办,我在别的系统上编译这个能顺利进行!
  • sos,,一个小程序,,接收数据,,可不知道为什么read就是出错,用recv就可以。
  • Linux下有开放源码的PC硬件诊断软件吗?那位大吓知道,先谢谢了
  • 我通国光盘安装了CENTOS4.4 但发现没有安装上LINUX源码 不知道 则么安装上去阿
  • 哪位知道有没有关于File replication service方面的开发包或者源码?
  • 哪位大侠知道在哪可以下到unix/linux中一些命令,如ls,cat等的源码!小弟不甚感激.
  • 来者有分,想了解linux下usb主控制器驱动源码,不知道看哪个版本的代码好?
  • 神那--救救我吧,一个句很短的源码,且编译不通过,还不知道为什么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪位大哥知道?我怎样知道LINUX redhat 7.2下声音设备由哪个应用程序占用?
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 怎样知道一个程序是否在运行?
  • 程序中用何函数或方法才知道所运行的java程序名?
  • 请问,如何知道一个应用程序用到了那个库函?
  • unix 下 怎样知道在某个端口监听的程序是什么
  • FEDROA8 下装的rpm程序包,怎么知道启动器放在哪里?
  • 经常听人调试程序时说程序“core了”,不知道所说的“core了”是什么意思?望大虾指点迷津......
  • 有人知道怎么在程序中生成pdf格式的文件吗??高分悬赏!!!!
  • 在程序中启动一个进程(不是线程),如何知道该进程已运行结束
  • 小弟急需要知道程序员查分网站。多谢!!!
  • 听说在linux里面安装一个什么X的程序就可以运行windows的软件,不知道是什么软件
  • 如何知道某个程序有多少个进程在运行?
  • 如何知道程序中调用的库在哪个路径下?
  • 如何知道程序运行过程
  • who知道如何开发linux下的摄像头之类的设备程序?
  • 现在我要写一个UNIX系统上的服务程序,但不知道如何对键盘事件进行响应
  • 如何知道应用程序链接了库里的哪些函数
  • 想写个磁盘空间检测的程序,不知道是perl 还是 shell?
  • 如何知道在linux下面如何知道mysql服务是用哪个端口啊
  • 那位知道怎样能知道 linux C/C++文件它所依赖的文件
  • 我做了个简单的留言板,不知道如何知道留言者的ip地址?
  • 只知道一个命令, 不知道其进程,问如何停止它?
  • red hat linux 9.0安装问题,不知道有人知道吗?
  • 知道进程的ID,有什么函数知道这个进程还活不活?
  • 我插入USB设备,知道是1-1:1.0下面,如何知道ttyUSB?
  • UI小问题,可我就是不知道怎么实现,或许您知道……
  • 我在rh8下装了wine,可是我不知道装到哪里了,那位知道默认路径?
  • 请问如何在不知道对方IP,仅知道MAC地址的情况下和对方通信呢?
  • 已知一个进程的PID,但不知道这个进程是否停止,如何能知道系统中是否有相应的进程在运行。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3