printf的缓存问题
#include <iostream>
#include <sys/types.h>
#include <unistd.h>using namespace std;int main (int argc, char *argv[])
{printf("%d           %d\n", getpid(), getppid());if(fork() == 0) {printf("%d           %d\n", getpid(), getppid());}return(0);
}

代码如上,如果直接在终端执行,结果如下:

如果重定向到文件,则结果为:

原因是linux下默认的缓存方式引起的。linux默认的缓存方式如下:

  屏幕、键盘和终端等交互作用设备 磁盘文件、管道等非交互作用设备
标准输出 行缓存 块缓存
标准出错 无缓存 无缓存

因为在屏幕输出是行缓存模式,所以直接就把两句话print了。

输出到文件时,首先是子进程结束,它结束的时候,才会写文件。这时候缓存里有主进程和子进程的两句话(子进程会从父进程那里拷贝内存的),所以就写到文件里了。然后父进程退出,父近程还是有一句话缓存的。所以有输出了一句话到文件里。这样就成了三句。

posted on 2010-01-19 23:04 南风轩 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zackyang/archive/2010/01/19/1651929.html

printf的缓存问题相关推荐

  1. STM32高级开发(12)-在GCC中使用printf打印串口数据

    在大家使用keil或是iar开发stm32等arm芯片的时候,想来最不陌生的就是使用print通过串口输出一些数据,用来调试或是其他作用.但是要明确的是由于keil iar gcc 他们使用的标准C语 ...

  2. Caffeine cache实现本地缓存(简单又清楚)

    Caffeine cache实现本地缓存题 缓存填充策略  手动加载  介绍:  使用方式:  同步加载  介绍:  使用方式:  异步加载  介绍:   注意: 异步和同步使用方式相似, 这里的话主 ...

  3. Linux下输入子系统上报触摸屏坐标

    Linux下输入子系统上报触摸屏坐标 1.输入子系统简介   在 Linux 中,输入子系统是由输入子系统设备驱动层.输入子系统核心层(Input Core)和输入子系统事件处理层(Event Han ...

  4. 用Vs调试STM32记事

    直接导入keil的工程文件,会有各种问题,如关联不上头文件,即使加载了头文件,也不能访问里面的定义??一头雾水,由于对GCC编译器不熟悉,并且用这种方式导入的文件,.h文件的颜色也不对,按F12可以关 ...

  5. Linux程序设计—多进程编程

    文章目录 1.进程 1.1.创建进程 1.1.1.fork() 1.1.2.vfork() 1.2.执行进程--exec函数族 1.3.进程退出 1.3.1.exit()和_exit() 1.4.进程 ...

  6. STM32+M5311对接 OneNET 项目记录

    以前做过的一个演示项目,一款判断人体进出的语言播报方案,通过LwM2M 协议连接 OneNET : 硬件平台:M5311 + STM32F103 云平台:中国移动 OneNET 语音芯片:WT(唯创知 ...

  7. Linux下IIC子系统和触摸屏驱动

    Linux下IIC子系统和触摸屏驱动 1.IIC简介   I2C( Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备. ...

  8. c语言----windows系列教程之音频录入与处理

    使用c语言进行语音数字信号分析: 一. 基础知识 波形输入设备: waveInGetNumDevs():返回当前系统的波形输入设备个数. WAVEINCAPS:结构体, 表示波形输入设备的能力.即使用 ...

  9. 使用C语言,模拟路由器的工作过程

    1.路由器 完成不同网段之间的通信,下面通过一个代码来具体演示路由器的工作过程 总结:这个项目耗时两天半完成,旨在理解原始套接字如何接收数据,发送数据.同时熟练使用sqlite3数据库 模拟两个不同网 ...

最新文章

  1. 乳腺MG数据获取(Breast Mammography)
  2. Windbg dump分析 学习总结
  3. java数组元素是类_Java数组及其常用类
  4. Java保留小数点一位的方法
  5. PVS中TFTP的隐藏配置
  6. “强省会”从产业开始,长沙市智能汽车产业促进会正式授牌
  7. MongoDB分片集群搭建
  8. effective python pdf下载-《Effective Python》电子书pdf下载百度网盘
  9. 2016民用安防2.0时代重新起航
  10. 有些梦想任时光侵袭也无法忘记,社科院杜兰金融管理硕士项目助你圆梦
  11. linux服务器使用WonderShaper进行带宽限制
  12. C语言 递推算法 案例猴子偷桃
  13. 如何搭建去中心化商城系统案例分析
  14. 概率论学习一——公理化定义及古典概型
  15. 怎么把pdf转换成ppt直接进行编辑
  16. 可转债交易薅羊毛策略 — Python 量化投资实战教程(10)
  17. python3 利用ffmpeg把音频转换为16khz的wav文件
  18. 使用Matlab2019b测试音频系统的频响(FreqResponse)与脉冲响应(ImpulseResponse)
  19. ARM学习之汇编的学习
  20. nosql | 搭建mongodb副本集

热门文章

  1. windows本地凭据备份与还原
  2. freerdp linux下连接windows远程终端工具
  3. PHP5.3版本安装
  4. JavaScript权威设计--JavaScript词法结构(简要学习笔记二)
  5. 无锡给的sql excel转换
  6. 计算机程序的构造和解释1构造过程抽象1.2过程与它们所产生的计算
  7. Win10 Qt5安装
  8. Web后端学习笔记 Flask(10)CSRF攻击原理
  9. 删除按钮_SPA PP COGI中禁用删除按钮?
  10. 手工卡纸做机器人_亲子手工,带孩子用彩色卡纸做一朵可爱的小花,有教程