linux系统函数
C库函数提供缓冲,应用层API无缓冲
阻塞/非阻塞
阻塞: 例如程序等待用户输入。未输入时,睡眠。
非阻塞:轮询(Poll) –>服务器
文件类型结构体 FILE*
FILE* 结构体 | 说明 |
---|---|
flag | 状态 |
f_pos | 当前写入指针位置 |
buffer | 缓冲区(8192B) |
内核为每个进程创建PCB(进程控制块),对应为结构体struct_task。struct_task包含struct_file,记录程序打开的文件。
常用函数
函数 | 说明 | 备注 |
---|---|---|
open | open/openat | create |
read | 返回读到的字节数。文件末尾返回0 | 终端读取,阻塞;磁盘读取,非阻塞。 |
write | 返回指定的写入参数,否则出错 | |
lseek | 为打开文件设置偏移量 | 扩展文件大小。获取文件大小 |
close | 释放进程加在文件的记录锁 | |
fcntl | 改变打开的文件属性 | |
ioctl | 杂项函数。对于不同的硬件文件类型,设置专有属性。比如设置串口波特率 |
文件共享
原子操作
多步组成的一个操作。操作原子地执行,要么执行完所有的步骤,要么一步也不执行。
pread = lseek + read
pwrite = lseek + write