《UNIXLinux程序设计教程》一3.5 fdopen()和fileno()函数

简介: 本节书摘来自华章出版社《UNIXLinux程序设计教程》一 书中的第3章,第3.5节,作者:赵克佳 沈志宇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5 fdopen()和fileno()函数

文件描述字函数是流函数的初等函数,每一个流都与一个描述字相连。给定一个打开的文件描述字,可以用fdopen()函数为它创建一个流。反过来,已知一个流,也可以用fileno()函数得到它的文件描述字。

#include <stdio.h>

FILE *fdopen (int filedes, const char * opentype);
int fileno (file * stream);

fdopen()使描述字filedes与一个流相连。它的返回值是一个新的流,如果不能创建此流,则返回空指针。
参数opentype的取值与fopen()的opentype参数完全相同,但“w”和“w+”不导致文件截断,因为截断是文件打开时的动作,而在此情形下,文件已经被打开。注意,调用fdopen()时必须保证opentype参数与打开文件描述字时使用的opentype参数一致。
fdopen()建立的新流的文件位置与描述字filedes的文件位置相同,且流的错误指示器和文件结束指示器均被清除。fdopen()的实质是为已打开的文件描述字提供标准I/O缓冲。
fileno()函数返回与流stream相连的文件描述字。利用它可以确定流的底层文件描述字。例如,当调用dup()或fcntl()时就需要知道与流相连的文件描述字。

相关文章
|
2月前
|
缓存 网络协议 Unix
Linux(UNIX)五种网络I/O模型与IO多路复用
Linux(UNIX)五种网络I/O模型与IO多路复用
127 0
|
12月前
|
Unix Linux C语言
计算机操作系统实验一 Unix/Linux编程开发环境
计算机操作系统实验一 Unix/Linux编程开发环境
125 0
|
2月前
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
39 2
|
2月前
|
Unix Shell Linux
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
46 4
|
2月前
|
Oracle Ubuntu Unix
Unix与Linux区别
Unix: Unix是一个操作系统家族的名称,最早由贝尔实验室(Bell Labs)的肖像电机公司(AT&T)开发。最早的Unix版本是在1969年创建的。 Linux: Linux是由芬兰计算机科学家Linus Torvalds在1991年创建的。它是作为一个免费、开放源代码的Unix克隆而开始的。
29 1
|
2月前
|
Unix Shell Linux
在Unix/Linux Shell中,管道(`|`)和重定向
在Unix/Linux Shell中,管道(`|`)和重定向
39 1
|
10月前
|
Unix 大数据 Linux
【Linux is not Unix】Linux前言
【Linux is not Unix】Linux前言
|
2月前
|
Ubuntu Unix Linux
Unix/Linux操作系统的最强入门科普(经典)
Unix/Linux操作系统的最强入门科普(经典)
198 0
|
2月前
|
网络协议 Unix Linux
在Unix/Linux shell中,与网络相关的命令
在Unix/Linux shell中,与网络相关的命令
35 2
|
2月前
|
监控 Unix Linux
在Linux和类Unix操作系统中,`top` 命令
在Linux和类Unix操作系统中,`top` 命令
42 2