apue第三章总结

1.open和openat函数

调用这两个函数可以打开或创建一个文件

当path参数指定的是相对路径名,fd参数指出了相对路径名在文件系统中的开始地址,可以理解为文件描述符

前五个常数不能重复,只能选其一。

长度截断为0是将文件内容删除为一个空文件

2.creat函数

用于创建一个新文件

以只写方式打开所创建的文件,如果文件名存在则覆盖原内容,若不存在则创建一个。

3.close函数

4.lseek函数

lseek与文件偏移量有关,简而言之就是指向的当前读写的位置,如果不设置的话,write和read每次操作文件,偏移量都会重置为0

5.read函数

第一个参数是文件描述符,第二个参数是要读取的内存地址,第三个参数是一次读的长度

6.write函数

读写的顺序是反过来的

int main(void) {
     int  n;  char buf[BUFFSIZE];  
     while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)   
         if (write(STDOUT_FILENO, buf, n) != n)    
             err_sys("write error");  
     if (n < 0)   
         err_sys("read error");   
     exit(0); 
}

比如read是从标准输入读到buf里边,然后write是从buf写到标准输出中。

总之就是从标准输入读,写到标准输出

7.内存共享

两个独立进程各自打开同一个文件的话,各自会拥有一份文件的表项。

8.原子操作

个人理解就是将多个操作合在一起变为一个操作处理,特别是处理两个进程要并发地处理同一个文件时。

(1)追加到一个文件

假设有两个进程都要对一个文件进行追写操作,那么同时执行的时候会出现问题,这种时候是将这两个操作对于其他进程而言称为一个原子操作。

解决方法是在打开文件的时候设置O_APPEND标志位,这样可以在每一次写的时候都偏移到文件尾端

(2)pread pwrite

(3)创建一个文件

3.12dup和dup2函数

返回当前可用的最小文件描述符,该文件描述符和fd指向同一个文件,即它们共享同一文件状态标志和文件偏移量

3.13sync fsync和fdatasync函数

这个和linux的sync命令有相同的效果,就是强制将缓冲区的内容读入硬盘中,特别是在突然断电的情况下,或者要重用缓冲区时。

3.14fcntl函数

 和dup差不多,但是可以支持获取文件状态标志

3.15 ioctl函数

io的万用函数,除了支持文件IO,还支持磁带IO、终端IO。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值