提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、文件I/O编程常使用的函数
1、open()
函数原型:int open(const char* pathname ,int flags, mode_t mode)
功能:打开一个文件
参数:pathname : 打开的文件;
flags:O_WRONLY 只写打开文件;
O_RDONLY 只读打开文件;
O_RDWR 可读可写打开文件
(这三种只能单独使用)
返回值:打开成功返回文件描述符,失败返回-1;
2、creat()
函数原型:int creat(const char* pathname,mode_T mode)
功能:创建一个权限为mode的文件
参数:pathname:需要创建的文件名;
mode : 文件权限可以选择的几种模式
返回值:创建成功返回文件的描述符,失败返回-1;
3、write()
函数原型:int write(int fd,void*buff,int count)
功能:向文件中写入数据;
参数:fd:需要写入数据的文件;
buff:buff所指向需要写入的数据的缓冲区;
count:需要写入的大小
返回值:写入成功返回写入的字节数;失败返回-1。
4、read()
函数原型:ssize_t read(int fd,void* buff,size_t count);
功能: 从文件中读出数据存放在buff指向的地址;
参数;fd:文件描述符
buff:读出的数据存放的地址空间;
count:需要读的数据大小;
返回值:读出成功返回读到的字节数;0 代表读到文件尾未读到数据;失败返回-1;
6、lseek()
函数原型:off_t lseek(int fd,off_t offset,int whence)
功能:移动文件读写指针;
参数:fd:文件描述符
offset:文件读写指针的偏移量;
whence:SEEK_SET:文件头
SEEK_CUR:当前位置
SEEK_END:文件末尾;
返回值:成功返回当前位置,即文件读写指针相比开头偏移量的大小;失败返回-1。
7、access()
函数原型:int access(const char*pathname,int mode)
功能:查询文件是否具有某项权限;
参数:pathname:需要查询的文件名(路径+名字)
mode:R_OK:判断文件是否具有可读权限;
W-OK:判断文件是否具有可写权限;
X_OK:判断文件是否具有可执行权限;
F_OK:判断文件是否存在。
返回值:查询成功返回0;失败返回-1;
8、unlink()
函数原型:int unlink(const char*pathname)
功能:删除文件
参数:pathname:需要删除的文件(路径+名字);
返回值:删除成功返回0;失败返回-1。
9、rmdir()
函数原型:int rmdir(const char*pathname)
功能:删除目录
参数:pathname:需要删除的目录(路径+名字);
返回值:删除成功返回0;失败返回-1。
10、remove()
函数原型:int remove(const char*pathname)
功能:删除目录或文件 //删除目录是调用redir(),删除文件调用unlink()。
参数:pathname:需要删除的目录或文件(路径+名字);
返回值:删除成功返回0;失败返回-1
11、fchtl()
函数原型:int fcntl(int fd,int cmd);
int fcntl(int fd,int cmd,long arg);
int fcntl(int fd,int cmd,struct flock * lock);//主要介绍这种
功能:可以对文件描述符进行各种操作;管理和创建文件锁等等(主要介绍文件锁)
参数:fd:文件描述符
cmd:F_DUPFD:用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd的文件描述词。
F_GETFD:取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时文件将不会关闭。
F_SETFD: 设置close-on-exec 旗标。该旗标以参数arg的FD_CLOEXEC位决定。
F_GETFL: 取得文件描述词状态旗标为open()的参数flags。
F_SETFL: 设置文件描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O_NONBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。
F_GETLK :取得文件锁定的状态。
F_SETLK: 设置文件锁定的状态。此时flcok 结构的l_type 值必须是F_RDLCK、F_WRLCK或F_UNLCK。如果无法建立锁定,则返回-1,错误代码为EACCES 或EAGAIN。
F_SETLKW: 与F_SETLK 作用相同,但是无法建立锁定时,此调用会一直等到锁定动作成功为止。若在等待锁定的过程中被信号中断时,会立即返回-1,错误代码为EINTR
lock:为struck flock类型,设置锁的状态。
注:struck flock
{
short l_type;//锁的种类;
off_t l_start; //相对位移量;
short l_whence;//相对位移量的起点
off_t l-len;//加锁区域的长度
pid_t l_pid;//进程号
}
返回值:成功返回0;失败返回-1;