教材学习内容总结(第十章)

Unix I/O

  • 打开文件:打开文件操作完成以后才能对文件进行一系列的操作,打开完成过以后会返回一个文件描述符,它在后续对此文件的所有操作中标识这个文件,内核记录有关这个打开文件的所有信息。
  • 打开文件的内核数据结构如下图:

2018-2019-1 20165210 《信息安全系统设计基础》第6周学习总结

  • 打开文件的C中用的头文件及函数:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *name,int flags);
int open(const char *name,int flags,mode_t mode);
  • 关闭文件:应用完成了对文件的访问之后,就通知内核关闭这个文件,内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中。进程终止,内核也会关闭所有打开的文件并释放他们的存储器资源。

I/O重定向:

  • I/O重定向:在Unix系统中,每个进程都有STDIN、STDOUT和STDERR这3种标准I/O,它们是程序最通用的输入输出方式。几乎所有语言都有相应的标准I/O函数,比如,C语言可以通过scanf从终端输入字符,通过printf向终端输出字符。熟悉Shell的朋友都知道,我们可以方便地对Shell命令进行I/O重定向,比如find -name "*.java" >testfile.txt 把当前目录下的Java文件列表重定向到testfile.txt。多数情况下,我们只需要了解I/O重定向的使用就够了,但是如果要编程实现类似Shell的I/O重定向以及管道功能,那么就需要清楚它的原理和实现。

  • 对STDOUT重定向到testfile.txt前后内核文件描述符表变化的示意图:

2018-2019-1 20165210 《信息安全系统设计基础》第6周学习总结

重定向前:

2018-2019-1 20165210 《信息安全系统设计基础》第6周学习总结

重定向后:

2018-2019-1 20165210 《信息安全系统设计基础》第6周学习总结

2018-2019-1 20165210 《信息安全系统设计基础》第6周学习总结

相关文章:

  • 2021-10-15
  • 2021-12-04
  • 2021-12-04
  • 2021-09-10
  • 2022-02-02
  • 2021-07-21
猜你喜欢
  • 2021-08-06
  • 2022-03-03
  • 2021-09-16
  • 2021-07-31
  • 2021-09-11
  • 2022-01-13
  • 2021-06-13
相关资源
相似解决方案