系统调用访问文件

来源:互联网 发布:第二号码软件 编辑:程序博客网 时间:2024/05/14 18:24
系统调用访问文件
1. 系统调用-创建
int creat(const char *filename, mode_t mode)
filename 要创建的文件名(包含路径,缺省为当前路径)
mode 创建模式
S_IRUSR 可读 0100 4
S_IWUSR 可写 0010 2
S_IXUSR 可执行 0001 1
S_IRWXU 可读、可写、可执行 01117
前缀 创建者权限组权限其他用户权限
0 755


2. 系统调用-打开
文件描述符: 所有打开的文件都对应一个文件描述符,是一个非负整数
int open(const *char pathname, int flags)
int open(const *char pathname, int flags, mode_t mode)
pathname 要打开的文件名
flags 打开标志
O_RDONLY 只读方式打开
O_WRONLY 只写方式打开
O_RDWR 读写方式打开
O_APPEND 追加方式打开
O_CREAT 创建一个文件 如果使用O_CREAT标志,则使用int open(const *char pathname, int flags, mode_t mode)
O_NOBLOCK 非阻塞方式打开

3. 系统调用-关闭
int close(int fd)
fd: 文件描述符。open的返回值

4. 系统调用-读
int read(int fd, const void *buf, size_t length)
从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数

5. 系统调用-写
int write(int fd, const void *buf, size_t length)
把length个字节从buf指向的缓冲区中写到文件描述符所指向的文件中,返回值为实际写入的字节数。

6. 系统调用-定位
int lseek(int fd, offset_t offset, int whence)
将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置
offset 向前移动为负值,向后移动为正值
whence 相对值
SEEK_SET 相对文件开头
SEEK_CUR 相对文件读写指针的当前位置
SEEK_END 相对文件末尾

读、写、定位将会改变文件指针

7. 系统调用-访问判断
int access(const char* pathname, int mode)
pathname: 文件名称
mode:要判断的访问权限。
R_OK: 文件可读
W_OK: 文件可写
X_OK: 文件可执行
F_OK: 文件存在
返回值: 当测试成功时,函数返回0,否则一个条件不符时,返回-1.
原创粉丝点击