0
点赞
收藏
分享

微信扫一扫

【Linux】进程IO|重定向|缓冲区|dup2|dup|用户级缓冲区|模拟缓冲区

 

目录

 前言

重定向

实验一

为什么log.txt文件的文件描述符是1 

为什么向stdout打印的信息也出现在文件中

实验二

用户级缓冲区

为什么要有用户级缓冲区

 系统调用

dup

为什么close(fd1)之后还能向log.txt写入数据?

dup2 

 缓冲区

观察现象

测试1 

 测试2

测试3

测试4

 现象解释

现象1 解释

现象2解释

现象3解释

现象4解释

 缓冲区的刷新策略

用户级缓冲区与OS的关系

实现一个缓存区 

myStdio.h 

myStdio.c 

testmyStdio.c 


 前言

重定向

实验一

 观察下面代码

为什么log.txt文件的文件描述符是1 

为什么向stdout打印的信息也出现在文件中

实验二

用户级缓冲区

为什么要有用户级缓冲区

 系统调用

dup

为什么close(fd1)之后还能向log.txt写入数据?

dup2 

 int dup2(int oldfd, int newfd);
头文件:<unistd.h>
 
oldfd:旧的文件描述符
newfd:新的文件描述符
 
函数返回值,成功返回 newfd,失败返回-1

 缓冲区

观察现象

测试1 

 测试2

测试3

测试4

 现象解释

现象1 解释

现象2解释

现象3解释

现象4解释

 缓冲区的刷新策略

用户级缓冲区与OS的关系

C语言文件操作向磁盘文件写入数据的过程是:程序运行,进程通过 fwrite 等函数将数据拷贝到缓冲区中,然后再由缓冲区以某种刷新方式刷新 (写入) 到磁盘文件中;

并不是直接将数据写入到磁盘文件中的(用户级语言级缓冲区在用户部分),这个过程还要经过操作系统处理,然后数据才写入磁盘的文件中;

实现一个缓存区 

myStdio.h 

myStdio.c 

testmyStdio.c 

 

举报

相关推荐

0 条评论