文件描述符
- pcb:结构体
- 一个进程有一个文件描述符:1024
- 文件描述符:寻找磁盘文件
函数open和openat
函数原型:
include<sys/stst.h>
#include<fcntl.h>int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);int openat(int fd, const char *pathname, int flags);
int openat(int fd, const char *pathname, int flags, mode_t mode);函数的返回值:若成功,返回文件描述符; 若出错,返回-1
flag参数:必选项
O_RDONLY | 只读打开 |
O_WRONLY | 只写打开 |
O_RDWR | 读、写打开 |
flag参数:可选项
O_APPEND | 每次写时追加到文件的末尾 |
O_CREAT | 若此文件不存在则创建它 |
O_EXCL | 创建文件时检测文件是否存在,必须与O_CREAT一起使用 |
O_TRUNC | 如果文件存在,而且只写或读写打开成功打开,则将其长度阶段为0 |
mode参数:mode &~ umask
测试代码:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<stdio.h>int main(int argc, const char *argv[])
{int fd = open("hello", O_RDWR | O_CREAT, 0777);if(fd == -1) {printf("打开失败\n");}close(fd);return 0;
}
输出结果: