《Unix环境高级编程》 阅读笔记之三 - 文件I/O

时间:2022-05-22 15:14:40

 

 

unix下错误大多数返回负整数或者错误码,0是错误码.

1.每个文件被打开时都会返回一个文件描述符

2.unix中标准输入 输出 错误码 文件描述符分别为 0 1 2,POSIX.1中被替换成常数 STDIN_FILENO,STDOUT_FILENO,STRERR_FILENO(在unistd.h文件中)

3.Open函数使用(不必记住,多写,多练,就记住了,不明白查手册,参数太多)

4.NAME_MAX=14,文件名如果超过这个值,会自动截短,不过BSD系统会报错(ENAMETOOLONG),不仅仅是文件目录的问题,调用函数时候也会出问题
5.create(pathname,mode)函数创建一个新文件,成功返回fd,失败-1,也可以用open创建,该函数是以只写方式创建一个文件.

6.close(int fd)函数关闭一个文件,不过在进程结束后会自动关闭,不过要有习惯的写上去,不然会出大问题(nonblock).

7.lseek函数 只修改偏移量,不进行I/O操作

《Unix环境高级编程》 阅读笔记之三 - 文件I/O

(每个进程都共享同一个V节点)

关于原子操作:

《Unix环境高级编程》 阅读笔记之三 - 文件I/O

说白了就是每次进行文件write操作之前把偏移量指向尾端......自动的,之前貌似要手动lseek

(Ps:原子操作不止这一种)

《Unix环境高级编程》 阅读笔记之三 - 文件I/O

 

关于dup和dup2:

《Unix环境高级编程》 阅读笔记之三 - 文件I/O

 

《Unix环境高级编程》 阅读笔记之三 - 文件I/O

 

《Unix环境高级编程》 阅读笔记之三 - 文件I/O

Fcntl 用于修改文件标志值