当前位置: 技术问答>linux和unix
子进程用_exit退出,父进程为什么就不能让stdout使用缓存呢?
来源: 互联网 发布时间:2016-12-24
本文导语: 本帖最后由 yang79tao 于 2011-08-22 17:15:30 编辑 我看到一行代码的注释如下: //make stdout unbuffered, since we terminate child with _exit() setbuf(stdout, NULL); 请问这是为什么? 如果我不unbuffered,那么child需要怎么terminate? ...
//make stdout unbuffered, since we terminate child with _exit()
setbuf(stdout, NULL);
请问这是为什么?
如果我不unbuffered,那么child需要怎么terminate?
|
为什么要看写程序的人的目的.
关看这句, 似乎看不出什么名堂.
比如某个程序如果不设为unbuffer 当把它输出重定向到 某个文本时,可能会有一部分打印看不到.
关看这句, 似乎看不出什么名堂.
比如某个程序如果不设为unbuffer 当把它输出重定向到 某个文本时,可能会有一部分打印看不到.
|
看不出来为什么,编程别逐字逐句扣好不好,我熟悉一个新项目一向只看头文件,源文件一个字不看
|
没有上下文,不好理解,呵呵
|
父子进程协同工作,为了不丢数据?等代码。。。
|
可能是因为如果带缓冲,子进程调用标注I/O如:printf时,由于缓冲(全缓冲,行缓冲无换行符)而不能立即打印.
需要进程退出时exit才能刷新出去。
而偏偏子进程非要调用_exit这个不关闭打开文件的EXIT系列函数,所以为了保证数据同步到设备,你就应该设置无缓冲。
应该就是这么简单的道理 =,= 别想太复杂
需要进程退出时exit才能刷新出去。
而偏偏子进程非要调用_exit这个不关闭打开文件的EXIT系列函数,所以为了保证数据同步到设备,你就应该设置无缓冲。
应该就是这么简单的道理 =,= 别想太复杂
|
缓冲减少磁盘I/O次数啊。
|
我知道,但子进程不是不能使用缓冲吗?因为子进程一般都是_exit结束的。
这个是谁告诉你的。“因为子进程一般都是_exit结束的。”
一般情况下,fock产生子进程会调用exec函数去执行其他的应用程序。一般应用程序都是以_exit结束的吗,我估计只有你这么写
这个是谁告诉你的。“因为子进程一般都是_exit结束的。”
一般情况下,fock产生子进程会调用exec函数去执行其他的应用程序。一般应用程序都是以_exit结束的吗,我估计只有你这么写