其他
Linux系统编程之I/O标准缓冲区
关注+星标公众号,不错过精彩内容
编排 | strongerHuang
微信公众号 | 嵌入式专栏
在Linux编程中,I/O是一种很常见的操作,下面为大家分享关于I/O编程的内容。
嵌入式专栏
1
标准I/O提供了三种类型的缓冲:
嵌入式专栏
2
测试代码:
int main(int argc, char *argv[])
{
FILE *fp = NULL;
// 读写方式打开,文件不存在则创建
fp = fopen("test.txt", "w+");
if(NULL == fp)
{
printf("open error\n");
return 1;
}
char *str = "C++程序员\n";
fwrite(str, 1, strlen(str), fp);// 往文件写内容
while(1);// 程序阻塞在这里
return 0;
}
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fp = NULL;
// 读写方式打开,文件不存在则创建
fp = fopen("test.txt", "w+");
if(NULL == fp)
{
printf("open error\n");
return 1;
}
char *str = "test\n";
int i = 0;
while(i <= 512){// 缓冲区大小不确定,i的大小只是一个调试值
fwrite(str, 1, strlen(str), fp);// 往文件写内容
i++;
}
while(1);// 程序阻塞在这里
return 0;
}
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fp = NULL;
// 读写方式打开,文件不存在则创建
fp = fopen("test.txt", "w+");
if(NULL == fp)
{
printf("open error\n");
return 1;
}
char *str = "test ok\n";
fwrite(str, 1, strlen(str), fp);// 往文件写内容
fclose(fp);// 人为关闭文件,就算缓冲区没有填满,内容也会写进文件
while(1);// 程序阻塞在这里
return 0;
}
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fp = NULL;
// 读写方式打开,文件不存在则创建
fp = fopen("test.txt", "w+");
if(NULL == fp)
{
printf("open error\n");
return 1;
}
char *str = "test ok\n";
fwrite(str, 1, strlen(str), fp);// 往文件写内容
return 0;
// 程序正常结束,就算缓冲区没有填满,没有关闭文件,内容也会写进文件。
}
嵌入式专栏
3
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello test");
while(1);
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello test\n");
while(1);
return 0;
}
int main(int argc, char *argv[])
{
while(1)
{
// 循环打印,总有缓冲区填满的可能
printf("hello sunplusedu");
}
while(1);
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello test");
fflush(stdout);// 人为刷新
while(1);
return 0;
}
3.3 程序正常结束
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello sunplusedu");
return 0;
// 程序正常结束
}
嵌入式专栏
4
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *str = "hello test";
// 有没有\n,缓冲区有没有填满,都没关系
write(1, str, strlen(str));// 往标准输出写内容
while(1);
return 0;
}
Linux系统调用中的IO函数一般不带有缓冲区。
后台回复『Linux』阅读更多相关文章。
点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。