Head First C学习之文件描述符、fileno()、du

2016-04-06  本文已影响45人  燚随风

进程用文件描述符表示数据流

描述符表:

名称 描述符号 数据流
标准输入 0 键盘
标准输出 1 屏幕
标准错误 2 屏幕
其他形式的数据流 3 数据库连接

fileno()返回描述符号

每打开一个文件,操作系统都会在描述符表中新注册一项。

#include <stdio.h>
int fileno(FILE *stream);
FLIE * my_file = fopen("guitar.mp3","r");

操作系统会遍历描述符表寻找空项,把新文件注册在其中。

描述符号 数据流
3 数据库连接
4 guitar.mp3文件

利用fileno()函数获取它的描述符

int descriptor = fileno(my_file)

dup2()复制数据流

#include <unistd.h>  
int dup( int oldfd );
int dup2( int oldfd, int targetfd );  
dup(4,3);

3号描述符重新指向4,假设4号描述符中注册了guitar.mp3文件指针。虽然guitar.mp3只有一个,与它相连的数据流野只有一条,但数据流(FILE*)同时注册在文件描述符3和4中

描述符号 数据流
3 数据库连接 (guitar.mp3文件)
4 guitar.mp3文件
上一篇 下一篇

猜你喜欢

热点阅读