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了。
输出到文件时,首先是子进程结束,它结束的时候,才会写文件。这时候缓存里有主进程和子进程的两句话(子进程会从父进程那里拷贝内存的),所以就写到文件里了。然后父进程退出,父近程还是有一句话缓存的。所以有输出了一句话到文件里。这样就成了三句。
转载于:https://www.cnblogs.com/zackyang/archive/2010/01/19/1651929.html
printf的缓存问题相关推荐
- STM32高级开发(12)-在GCC中使用printf打印串口数据
在大家使用keil或是iar开发stm32等arm芯片的时候,想来最不陌生的就是使用print通过串口输出一些数据,用来调试或是其他作用.但是要明确的是由于keil iar gcc 他们使用的标准C语 ...
- Caffeine cache实现本地缓存(简单又清楚)
Caffeine cache实现本地缓存题 缓存填充策略 手动加载 介绍: 使用方式: 同步加载 介绍: 使用方式: 异步加载 介绍: 注意: 异步和同步使用方式相似, 这里的话主 ...
- Linux下输入子系统上报触摸屏坐标
Linux下输入子系统上报触摸屏坐标 1.输入子系统简介 在 Linux 中,输入子系统是由输入子系统设备驱动层.输入子系统核心层(Input Core)和输入子系统事件处理层(Event Han ...
- 用Vs调试STM32记事
直接导入keil的工程文件,会有各种问题,如关联不上头文件,即使加载了头文件,也不能访问里面的定义??一头雾水,由于对GCC编译器不熟悉,并且用这种方式导入的文件,.h文件的颜色也不对,按F12可以关 ...
- Linux程序设计—多进程编程
文章目录 1.进程 1.1.创建进程 1.1.1.fork() 1.1.2.vfork() 1.2.执行进程--exec函数族 1.3.进程退出 1.3.1.exit()和_exit() 1.4.进程 ...
- STM32+M5311对接 OneNET 项目记录
以前做过的一个演示项目,一款判断人体进出的语言播报方案,通过LwM2M 协议连接 OneNET : 硬件平台:M5311 + STM32F103 云平台:中国移动 OneNET 语音芯片:WT(唯创知 ...
- Linux下IIC子系统和触摸屏驱动
Linux下IIC子系统和触摸屏驱动 1.IIC简介 I2C( Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备. ...
- c语言----windows系列教程之音频录入与处理
使用c语言进行语音数字信号分析: 一. 基础知识 波形输入设备: waveInGetNumDevs():返回当前系统的波形输入设备个数. WAVEINCAPS:结构体, 表示波形输入设备的能力.即使用 ...
- 使用C语言,模拟路由器的工作过程
1.路由器 完成不同网段之间的通信,下面通过一个代码来具体演示路由器的工作过程 总结:这个项目耗时两天半完成,旨在理解原始套接字如何接收数据,发送数据.同时熟练使用sqlite3数据库 模拟两个不同网 ...
最新文章
- 乳腺MG数据获取(Breast Mammography)
- Windbg dump分析 学习总结
- java数组元素是类_Java数组及其常用类
- Java保留小数点一位的方法
- PVS中TFTP的隐藏配置
- “强省会”从产业开始,长沙市智能汽车产业促进会正式授牌
- MongoDB分片集群搭建
- effective python pdf下载-《Effective Python》电子书pdf下载百度网盘
- 2016民用安防2.0时代重新起航
- 有些梦想任时光侵袭也无法忘记,社科院杜兰金融管理硕士项目助你圆梦
- linux服务器使用WonderShaper进行带宽限制
- C语言 递推算法 案例猴子偷桃
- 如何搭建去中心化商城系统案例分析
- 概率论学习一——公理化定义及古典概型
- 怎么把pdf转换成ppt直接进行编辑
- 可转债交易薅羊毛策略 — Python 量化投资实战教程(10)
- python3 利用ffmpeg把音频转换为16khz的wav文件
- 使用Matlab2019b测试音频系统的频响(FreqResponse)与脉冲响应(ImpulseResponse)
- ARM学习之汇编的学习
- nosql | 搭建mongodb副本集