Linux有关文件操作的系统调用的总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、open函数

  1. 函数原型
int open(const char* pathname, int flags);//用于打开一个已存在的文件 
int open(const char* pathname, int flags,mode_t mode);//用于新建一个文件, 并设置访问权限
  1. 返回值 : 失败返回-1,成功返回一个文件描述符。
  2. 参数介绍
    (想要打开一个文件,我们要知道这个文件在哪(路径),还要知道对这个文件执行什么操作(flags),还要设置它的权限(mode))
    (1)pathname:文件路径,如果在当前目录下就是文件名。
    (2)flags:执行的操作,读,写,读写,创建……
    O_RDONLY 只读打开
    O_WRONLY 只写打开
    O_RDWR 读写打开
    还可以与下面的结合,用 | 结合
    O_CREAT 文件不存在就创建
    O_APPEND 文件末尾追加
    O_TRUNC 清空文件,重新写入

    (3)mode:文件的权限。使用man 帮助手册可以查看。 在这里插入图片描述

二、read函数

在这里插入图片描述

三、write函数

在这里插入图片描述

四、close函数

在这里插入图片描述

五、其他与文件有关的系统调用

1. lseek函数
在这里插入图片描述
(1)函数功能
调整读写的位置,就像移动鼠标光标一样。C库的标准io函数里面有一个fseek函数,也是用于调整读写位置的,fseek就是对lseek系统函数封装后实现的。
(2)返回值:
调用成功:返回当前读写位置相对于文件开始位置的偏移量(字节)。 可以使用lseek函数获取文件的大小,将文件读写的位置移动到最末尾,然后获取返回值,这个返回值就是文件头与文件尾之间的字节数,也就是文件的大小。
调用失败:返回-1,并给errno设置错误号。
(3)参数:

off_t lseek(int fd, off_t offset, int whence);
	1)fd:文件描述符,指向打开的文件

	2)whence:
		粗定位,选项有:
		SEEK_SET:调到文件起始位置
		SEEK_CUR:调到文件当前读写的位置
		SEEK_END:调到文件末尾位置
		
	3)offset:
		精定位:微调位置
		从whence指定的位置,向前或者向后移动指定字节数。
		为负数:向前移动指定字节数
		为正数:向后移动指定字节数

		不过当whence被指定为SEEK_SET时,如果offset被指定为负数的话,
		是没有意义,因为已经到文件头上了,在向前移动就越界了,不再当
		前文件的范围内了,如果非要向前调整,lseek函数会报错。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值