open、creat、write、close、lseek等文件操作函数详解

本文详细介绍了C语言中与文件操作相关的函数,包括open、creat用于打开或创建文件,write用于向文件写入数据,close用于关闭文件,以及lseek用于设置文件偏移量。通过这些函数,开发者可以实现对文件的读写和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们回忆一下,stdin&stdout&stderr

C默认会打开三个输出输入流,分别是stdin,stdout,stderr。且这三个流的类型都是FILE*,fopen返回值类型,文件指针

文件操作

文件操作的一般过程:

打开文件,打开成功后,应用程序将获得文件描述符;

应用程序使用文件描述符对文件进行读写等操作;

全部操作完毕后,应用程序需要将文件关闭以释放用于管理打开文件的内存;

、open和openat函数:系统调用可以打开或创建一个文件

1、看一下open函数:

(图中create函数在下面讲解)
参数说明:
pathname:指向欲打开的文件路径字符串

flags :打开文件时,可以传入多个参数选项,用下面的一个或者多个常量(只列出了一部分)进行“或”运算,构成flags.(如下)

注:open函数具体使用那个,和具体场景有关。比如,目标文件不存在,需要open创建,则第三个参数表示文件的默认权限(默认权限请看文章第三点对umask的介绍点击打开链接)。

否则就使用两个参数即可。

返回值:

成功:新打开的文件描述符

失败:-1
2、看一下openat函数


可以看出来,参数dirfd将open函数和openat函数区分开来,共有三种可能性:
(1)path参数指定的是绝对路径名,在这种情况下,fd参数被忽略,openat函数相当于open函数
(2)path参数指定的是相对路径名,fd参数指出了相对路径名在文件系统中的开始地址。
fd参数是通过打开相对路径名所在的目录来获取。
(3)path参数指定了相对路径名,fd参数具有特殊值AF_FDCWD。在这种情况下,路径名在当前工作目录中获取,openat函数在操作上与open函数类似。

所以,openat函数是希望解决两个问题:
(1)让线程可以使用相对路径名打开目录中的文件

(2)可以避免time-of-check-of-use(TOCTTOU)错误。

二、函数creat-创建一个新文件

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值