标签:trunc 函数 内存 ascii 检索 写文件 原理 返回 出错
介绍:所有I/O设备都被模型化为文件,这种将设备映射为文件的方式,允许Linux内核引出一个简单、低级的应用接口,称为Unix I/O。
打开文件:一个应用程序通过要求内核打开相应的文件,宣告它想要访问一个I/O设备。
每个进程开始时有3个打开的文件:标准输入、标准输出、标准错误。
改变当前文件位置:每个打开的文件,有一个文件位置k,文件位置是文件开头起始的字节偏移量。seek可以显式设置文件的当前位置。
读写文件:
读:从文件复制n个字节到内存中
写:从内存复制n个字节到文件中
关闭文件:内核释放文件打开时创建的数据结构,关闭打开的文件并释放内存。
文件类型
普通文件:
文本文件:只含有ASCII或Unicode字符的普通文件。
二进制文件:所有不是文本文件的文件。
目录:包含一组链接的文件,每个链接都将一个文件名映射到一个文件。
套接字:用来与另一个进程进行跨网络通信的文件。
可以用cd命令修改shell中的当前工作目录。
路径名的两种形式:
绝对路径:以一个斜杠开始,表示从根节点开始的路径。
相对路径:以文件名开始,表示从当前工作目录开始的路径。
打开与关闭文件:
进程通过Open函数打开一个已存在的文件或者创建新文件。
int open(char *filename,int flags,mode_t mode);
原理:open函数将文件名转换成一个文件描述符,并且返回该描述符数字。
flag参数:
O_RDONLY:只读
O_WRONLY:只写
O_RDWR:可读可写
O_CREAT:如果文件不存在,创建一个新文件。
O_TRUNC:如果文件已存在,截断。
O_APPEND:在每次写操作前,设置文件位置到文件的结尾处。
例子:fd = Open("foo.txt",O_RDONLY,0)
以读的方式打开一个已存在的文件。
mode参数:指定了新文件的访问权限位。
S_IRXX:XX能够读这个文件
S_IWXX:XX能够写这个文件
S_IXXX:XX能够执行这个文件
进程通过调用close函数关闭一个打开的文件,传入的参数为文件描述符。
int close(int fd);
如果关闭一个已关闭的描述符会出错
读和写文件
应用程序通过read与write函数来执行输入和输出。
read介绍:read函数从描述符为fd的当前文件位置复制最多n个字节到内存位置buf,返回值为-1表示一个错误,返回值为0表示EOF。
ssize_t read(int fd, void *buf , size_t n);
write介绍:从内存位置buf复制至多n个字节到描述符fd的当前文件位置。
ssize_t write(int fd, const void *buf , size_t n);
RIO包的两种不同函数
无缓冲的输入输出函数:直接在内存与文件之间传送数据
带缓冲的输入函数:允许高效地从文件中读取文本行与二进制数据。
应用可以通过stat函数检索相关文件信息。
stat函数以一个文件名为输入,并填写一个stat数据结构中的各个成员。
int stat(const char filename,struct stat buf);
相关函数
打开与关闭文件:fopen(),fclose()
读和写:fread(),fwrite()
读、写字符串:fgets(),fputs()
od :读取文件内容,以二进制显示。
man -k k1| grep k2 | grep k3:过滤关键字k查找
grep -nr XXX /usr/include:寻找XXX在哪一个文件中
2018-2019-1 20165320 《信息安全系统设计基础》第六周学习总结
标签:trunc 函数 内存 ascii 检索 写文件 原理 返回 出错
原文地址:https://www.cnblogs.com/Gst-Paul/p/9906031.html