UNIX文件操作函数open、create、close、lseek简介

目录

一、文件描述符

二、文件控制头文件  fcntl.h

2.1 打开文件函数

2.2 创建文件函数

三、符号常量头文件unistd.h

3.1 关闭文件函数

3.2 确定文件偏移量函数


一、文件描述符

文件描述符:对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数

当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。

当读或写一个文件时,使用open或create返回的文件描述符标识该文件,将其作为参数传送给read或write。


二、文件控制头文件  fcntl.h

POSI标准定义的关于文件控制的头文件


2.1 打开文件函数

函数原型 int open(const char *pathname, int oflag, .../*mode_t mode */);

    1、pathname是要打开或创建文件的名字(包括文件路径);

    2、oflag参数用来说明此函数的多个选项:
在这三个常量中必须指定且只能指定一个
O_RDONLY  只读模式
O_WRONLY  只写模式
O_RDWR    读写模式
可选(仅仅列举部分)
O_APPEND  每次写都追加到文件的尾端
O_CREAT   此文件不存在,则创建它。需要第三个参数,mode,用其指定该新文件的访问权限位。

    3、mode(访问权限位)
创建文件时使用,用其指定新文件的访问权限位。

    4、返回值:open返回的文件描述符一定是最小未用的描述符数值

2.2 创建文件函数

int create(const char *pathname, mode_t mode);


三、符号常量头文件unistd.h

符号常量定义在<unistd.h>   unistd.h是unix std的意思,是POSIX(Portable Operating System Interface可移植的操作系统接口)标准定义的unix类系统定义符号常量的头文件。(推荐阅读Linux的前世今生,了解下什么是unix类系统)。

文件描述符0与标准输入关联    STDIN_FILENO
           文件描述符1与标准输入关联    STDOUT_FILENO
           文件描述符2与标准出错输出关联STDERR_FILENO

3.1 关闭文件函数

关闭一个文件时还会释放该进程加在该文件上的所有的记录锁。
           返回值:成功返回0,出错返回-1

3.2 确定文件偏移量函数

每个打开的文件都有一个与其相关联的“当前文件偏移量”(current file offset)。通常是一个非负整数。通常,读、写操作都从当前文件偏移量处开始,并使偏移量增加所读写的字节数。按系统默认情况下,当打开一个文件时,除非指定O_APPEND,否则该偏移量设置为0。

off_t seek(int filedes, off_t offset, int whence)
           对参数的解释与参数whence的值有关。

见名知意


若whence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节
若whence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可为正或负
若whence是SEEK_END,则将该文件的偏移量设置为文件长度加offset,offset可为正或负
若lseek成功执行,则返回新的文件偏移量。

 

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/81383053
今日推荐