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

菜鸟问题!!!!fork 与stdout 缓冲区问题??????

    来源: 互联网  发布时间:2016-02-01

    本文导语:  如下: int main (void) {   printf ("This is my output");   fork();   return 0; } 输出结果为:This is my output.This is my output. 为什么会输出两次,我在子进程中没有任何操作.最好能否画出类似下面的图表,万分感激.... 父进...

如下:

int main (void)
{
  printf ("This is my output");
  fork();
  return 0;
}

输出结果为:This is my output.This is my output.

为什么会输出两次,我在子进程中没有任何操作.最好能否画出类似下面的图表,万分感激....


父进程的文件描述符表                       系统文件表
[0]|_________|---->                        |_________|
[1]|_________|----->                       |_________|
[2]|_________|------>                      |_________|
[3]|_________|------->                     |_________|
   |_________|                             |_________|



子进程的文件描术符表                       
[0]|_________|------------->
[1]|_________|-------->
[2]|_________|---------->
[3]|_________|----------->

希望通过上面的程序,画出这样的表格说明父进程的文件描述符与子进程的文件描述符与共享的系统文件表三者之间的关系.

这个小程序虽然非常小,但是输出的的结果我真是搞不明白.
我试过在这句代码里 printf ("This is my output.n/*后面加了个换行符*/");
输出的结果就是一行了,但不明白是为什么.
书上解释由于stdout 是标准的行缓冲输出.
只是想知道,这两个进程在内存中的真实的形态与共享的系统文件表之间的关系.
为什么会输出两次我在子进程中没有任何操作.

|
printf ("This is my output");后打印的内容在缓冲区里,fork后,父子进程的缓冲区里也是相同的,进程退出时,缓冲区输出到屏幕,所以有两份。

|
printf ("This is my outputn");
缓冲区的数据在fork之前已经输出的屏幕了,此时缓冲区里没有数据了。

|
终端为行缓冲模式时上面的说法才是正确的。

    
 
 

您可能感兴趣的文章:

  • 菜鸟问一个关于j2ee的菜鸟问题
  • 菜鸟求问菜鸟问题 ,域名绑定
  • gcc问题---菜鸟发问之一,老大们帮忙啊!!菜鸟分不多,只好给这点了,对不起!!
  • 菜鸟又来问菜鸟问题了
  • 一个关于日期的问题!(菜鸟问题,请高手不吝赐教)
  • linux下游戏问题。(菜鸟问题)
  • 菜鸟问题:现在要做unix下的c/c+编程的几个问题?
  • 菜鸟问题,在jbuilder中的编程小问题
  • 超级菜鸟的~~不好意思问题~~REDHAT9的视频播放问题~!
  • 菜鸟问题 : 关于使用Flex的问题
  • [菜鸟问题]关于live555的问题
  • 小菜鸟问题请 遇到过相同问题的朋友们请介绍下经验,谢过先
  • (菜鸟飞飞)问个关于软中断和系统调用的问题
  • 菜鸟提问了,关于编译问题?
  • 菜鸟,java的运行问题
  • 菜鸟问题:如何在red hat 9下加入一个新的分区
  • WEB前端 iis7站长之家
  • 菜鸟问题~~快点进来拿分
  • 菜鸟菜问题1
  • 菜鸟问题:如何在Solaris下配置显卡和显示器
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ----菜菜鸟第三问:-菜鸟菜问:JAVA如何求 根号、开次方? -----
  • 怎样从一个菜鸟级的java programer升级到一个菜鸟级的java developer
  • 一个连菜鸟都算不上的菜鸟
  • ===菜鸟系列===:写过毕业论文的前辈请进!!!菜鸟散分啦!!!!
  • 菜鸟的Linux练习疑问……
  • 菜鸟刚学jsp,还不知道怎么和sql server2000的数据库相连,我已经把odbc配好了,谁能给我一段和数据库相连的并显示所有数据的代码!菜鸟
  • 菜鸟提问,我怎么装redhat7。1
  • 菜鸟写的俄罗斯方块,请多多批评!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • ※菜鸟送分之一※ Red Hat Linux 的最高版本是多少?
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • 菜鸟提问:包是什么概念?
  • 如何解压光盘上的gz文件到某个目录?(Linux 超级菜鸟问题之一)
  • 菜鸟的问题:求助,关于red hat linux 引导程序
  • 菜鸟问题,如何在Windows 设置CLASSPATH,我还没吃午饭
  • 菜鸟到此报到,各位前辈多多指教^_^
  • 初级菜鸟的简单问题,关于DeviceIoControl,各位高手指点一下吧!
  • 菜鸟问题!!!
  • 菜鸟提问:请问Unix下面有没有类似Win32下_T这样的宏?


  • 站内导航:


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

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

    浙ICP备11055608号-3