zoukankan      html  css  js  c++  java
  • linux文件流与文件描述符之间的转换

     

    1、已知文件流指针,获取对应的文件描述符

         int fileno(FILE *stream);

         主要应用:如果程序先前用fopen打开了一个文件,但是又想对其进行锁定操作,

         例如 int fcntl(int fildes, int command, struct flock *flock_structure)(注意:command为F_GETLK, F_SETLK, F_SETLKW中其中一者)

         或者 int lockf(int fd, int cmd, off_t len),就得先用fileno得到对应的文件描述符后再进行fcntl/lockf操作。

    2、已知文件描述符,获取对应的文件流指针

         FILE *fdopen(int fildes, const char *type);

         将一个文件流关联到一个打开的文件描述符

         fildes可以是open,dup, dup2, creat, pipe, socket等系统调用返回的结果。

         type指定打开的方式,同fopen的"r","w","a"等等。

         fdopen的打开方式受制于fildes的打开方式,例如:open时用O_RDONLY,那么fdopen就只能用"r"方式。

         主要应用:当你不得不只能打开文件号,但却想用fprintf,fscanf等流操作进行数据读写时,就再用fdopen一次便可。

  • 相关阅读:
    安装Hadoop单机版
    Linux的en33没有IP地址
    idea导入spring源码
    CSS 选择器之基础选择器
    CSS 简介和代码风格
    JavaScript 中 双感叹号 !! 的作用
    VS Code 中的settings.js 配置
    项目中使用 vuex 实现(状态)数据共享
    VS Code 相关设置
    Node.js 的简单了解
  • 原文地址:https://www.cnblogs.com/beanmoon/p/2732006.html
Copyright © 2011-2022 走看看