pcb:结构体
一个进程由一个文件描述符表:1024,前三个占用,文件描述符作用,需要磁盘文件。
1:open、close
int open(const char* pathname,int flags);
int open(const char* pathname,int flags,mode_t mode);
参数:
flags:
必选项O_RDONLY,O_WRONLY,O_RDWR
可选项:
I:创建文件:O_CREAT
创建文件时检测文件是否存在:O_EXCL
如果文件存在,返回-1
必须与O_CREAT一起使用
II:追加文件:O_APPEND
III:文件截断:O_TRUNC
IV:设置非阻塞:O_NONBLOCK
mode:
mode & ~umash
2:read
函数原型:ssize_t read(int fd,void *buf, size_t count)
参数:fd: open的返回值
buf 缓冲区 存储要读取的数据
count:缓冲区能存储的最大字节数 sizeof(buf)
返回值:
-1:失败
成功:
>0 :读出的字节数
=0:文件读完了
3:write
函数原型:ssize_t write(int fd, const void* buf, size_t count)
参数:
fd:
buf:
count:strlen(buf),有效字节数
返回值:
-1: 失败
>0: 写入到文件的字节数
4:lseek
函数原型:off_t lseek(int fd, off_t offset, int whence);
5:阻塞和非阻塞
阻塞和非阻塞是文件属性还是read函数的属性