fileno

来源:互联网 发布:照片故事软件 编辑:程序博客网 时间:2024/06/08 07:41

   函数名称:fileno(在VC++6.0下为_fileno) 

 函数原型:int _fileno( FILE *stream ); 

 函数功能:fileno()用来取得参数stream指定的文件流所使用的文件描述符  返回值:某个数据流的文件句柄  

头文件:stdio.h  

相关函数:open,fopen,fclose

     程序示例

  先看MSDN上的例子:  

       #include <stdio.h>  int main( void )  {  printf( "The file descriptor for stdin is %d\n", _fileno( stdin ) );  printf( "The file descriptor for stdout is %d\n", _fileno( stdout ) );  printf( "The file descriptor for stderr is %d\n", _fileno( stderr ) );  } 

 输出:  

The file descriptor for stdin is 0The file descriptor for stdout is 1The file descriptor for stderr is 2

程序示例2

      #include<stdio.h>       int main(void)  {  FILE *fp;  int fd;  fp = fopen("/etc/passwd", "r");  fd = fileno(fp);  printf("fd = %d\n", fd);  fclose(fp);  return 0;  } 

fileno函数的实现

  #define fileno(__p) ((__p)->_file)  因为FILE 结构体定义为,类似  

       typedef struct {  unsigned char *_ptr;  int _cnt;  unsigned char *_base;  unsigned char *_bufendp;  short _flag;  short _file;  int __stdioid;  char *__newbase;  void *_lock;  } FILE; 


 其中 _file就是文件描述符。 

0 0
原创粉丝点击