《Linux系统调用:fileno,fdopen》

本文介绍了Linux中用于文件I/O操作的库函数fileno()和fdopen()。fileno()用于获取流与文件描述符的关联,而fdopen()则是为已打开的文件描述符创建一个新的流,两者常用于混合使用库函数和系统调用。注意,fdopen()不会导致文件截断,其新建流的位置与原始文件描述符相同,并清除了错误和文件结束指示器。

一、介绍

库函数: fileno(),fdopen(). 作用是混合使用库函数和系统函数调用进行文件的I/O操作。 

#include <stdio.h>

//将一个文件流中对应打开的文件描述符fd返回
int fileno(FILE *stream);
参数:
	stream: fopen之类的函数打开的文件流

返回值:
	正确返回文件描述符fd,一般不会错误除非无效的流,返回-1,并设置errno为EBADF


// 给定一个文件描述符和mode创建一个使用该描述符对应的流,与fileno相反
FILE *fdopen(int fd, const char *mode);
参数:
	fd: open函数打开的文件描述符
	mode: 参考fopen函数的mode

返回值:
	正确返回流,错误返回NULL并设置errno	

注意:
1.mode必须是fopen中的mode
2.w”和“w+”不导致文件截断,因为截断是文件打开时的动作,而在此情形下,文件已经被打开。
3.fdopen()建立的新流的文件位置与描述字fd的文件位置相同,且流的错误指示器和文件结束指示器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HarkerYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值