码迷,mamicode.com
首页 > 其他好文 > 详细

write不带缓冲,标准IO库带缓冲

时间:2020-09-18 04:07:04      阅读:36      评论:0      收藏:0      [点我收藏+]

标签:nbsp   sys   err   long   file   clu   函数   pue   class   

结论

使用write函数直接输出到输出设备上,是不带缓冲;但是标准IO库是带有缓冲的,printf遇到\n的时候才会冲刷缓冲区,输出到输出设备上。

测试程序

如下:

 1 #include "apue.h"
 2 
 3 int globvar = 6;
 4 char buf[] = "a write to stdout\n";
 5 
 6 int main()
 7 {
 8         int var;
 9         pid_t pid;
10     
11         var = 88; 
12         if (write(STDOUT_FILENO, buf, sizeof(buf)-1) !=  
13                 sizeof(buf) -1) 
14         {   
15                 err_sys("write error"); 
16         }   
17         printf("before fork  ");
18         sleep(3);
19         if ((pid = fork()) < 0)
20                 err_sys("fork error");
21         else if (pid == 0) {
22                 globvar++;
23                 var++;
24         } else {
25                 sleep(2);
26         }   
27     
28         printf("pid = %ld, glob = %d, var = %d\n",
29                 (long)getpid(), globvar, var);
30         exit(0);
31 
32 }

输出结果

如下

a write to stdout

// sleep 3s
before fork  pid = 27219, glob = 7, var = 89

// sleep 2s
before fork  pid = 26934, glob = 6, var = 88

write不带缓冲,标准IO库带缓冲

标签:nbsp   sys   err   long   file   clu   函数   pue   class   

原文地址:https://www.cnblogs.com/micoblog/p/13683770.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!