(1)复制文件描述符
头文件:

#include <unistd.h>

原型: int dup(int oldfd);
参数: 要复制的文件描述符。
返回值:新的文件描述符。
效果: dup 调用成功后,有两个文件描述符指向同一个文件。
注意: 返回的新的描述符,取最小的且没有被占用的文件描述符。
(2)文件描述符的重定向
头文件:

#include <unistd.h>

原型: int dup2(int oldfd, int newfd); // new 追随 old
参数: oldfd : 被复制的文件描述符 ;newfd :相当于 dup2 的返回值,即复制的文件描述符。
返回值:新的文件描述符
效果: 同 dup
(3)改变已经打开的文件的属性
头文件:

#include <unistd.h>
#include <fcntl.h>

原型:

 int fcntl(int fd, int cmd, ... /* arg */ ); // 变参函数:获取时候 2 个参数,设置取时候 3 个参数

使用 1:
复制一个已有文件描述符 :int ret = fcntl(fd, F_DUPFD); // 效果等同于 int ret = dup(fd);
使用 2:获取/设置文件状态标识
获取: int flag = fcntl(fd, F_GETFL);
设置:
第一步: 先获取 flag;
第二步:

flag = flag | O_NONBLOCK; fcntl(fd, F_SETFL, flag); // 注意:可以设置的常用标识 O_APPEND、O_NONBLOCK

何为文件状态标识呢?
open 函数:

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode); // 参数 2 就是文件标识

注意:open 是在打开之前设置,而 fcntl 是在打开之后设置。

Linux学习:文件描述符相关函数相关推荐

  1. Linux下文件描述符

    Linux下文件描述符 标签: linuxfilelinux内核apacheunixsocket 2012-08-17 15:45 5798人阅读 评论(0) 收藏 举报 分类: 调优和安全(5) 版 ...

  2. linux下文件描述符的介绍

    linux下文件描述符的介绍 (2012-10-02 16:01:56) 转载▼ 标签: 描述符 调用 返回 进程 限制 it 分类:linux 当某个程序打开文件时,操作系统返回相应的文件描述符,程 ...

  3. linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析

    本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...

  4. 深入理解Linux/Unix文件描述符和epoll

    Linux/Unix 文件描述符(File Describer)的本质 Linux/Unix(以下简称Linux)系统中,每个进程都有一个专用的数组,数组的元素是一个结构体,称为文件描述符File D ...

  5. linux用户文件描述符2表示,Linux下文件描述符

    Linux下文件描述符 文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket.第一个打开的文件是0,第二个是1,依此类推.Unix操作系 统通常给每个进程能打开的文件数量强加一个 ...

  6. linux存储--文件描述符以及file结构体(一)

    一.什么是文件描述符 在Linux下一切皆文件,对于内核而言,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数,当打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符.当读. ...

  7. UNIX再学习 -- 文件描述符

    在 UNIX/Linux 系统中,一切皆文件,这句话想必都有听过.对于文件的操作几乎适用于所有的设备,这也就看出了文件操作的重要性了.在C语言再学习部分有讲过标准I/O文件操作,参看:C语言再学习 - ...

  8. linux进程文件描述符 vnode,Linux C编程详解:进程原理分析、文件描述符和文件记录表、文件句柄和文件原理...

    一.引言 文件操作是Linux C编程中其中的一项核心技术,实际上也相当重要,这里并不是说狭义上的那种文件操作,它也非常有助于理解和学习Linux系统.为什么这样说呢?因为在Unix/Linux的世界 ...

  9. Linux - fd文件描述符和文件详解

    ​​​​​​​             ​​​​​​​  感谢各位 点赞 收藏 评论 三连支持 本文章收录于专栏[Linux系统编程] ❀希望能对大家有所帮助❀ 本文章由 风君子吖 原创 ​​​​​​ ...

最新文章

  1. linux下c 多线程如何映射文件夹,c - 在Linux中使用多个线程进行信号处理
  2. gem ransack(4000✨) 简单介绍
  3. android menu xml 属性,Android中Menu类型及常见属性说明
  4. 处理minist数据集,把网络和数据都放在gpu上面。
  5. 955 加班少的公司名单!
  6. SIA:全球半导体行业销售额7月达到454亿美元 创下月度纪录
  7. 个人品牌遇到危机怎么办?
  8. abb变频器正反转切换参数_变频器自动节能功能与电动机正反转图解
  9. sql server2014使用BULK INSERT导入UTF-8数据中文乱码问题
  10. vc2012编译speex (没编过)
  11. VS2012 打开项目后无法编辑
  12. python从tushare获取数据_Python丨金融数据获取之tushare (下)
  13. Python正态云发生器
  14. php循环套循环_PHP中的事件循环简介
  15. 树莓派云台舵机怎么用_基于树莓派的多舵机控制的定位拍照云台
  16. 概说SEO中的过度优化
  17. paddleSlim(一)剪裁
  18. 如何靠代码发家致富?——10种可以赚钱的途径
  19. 特斯拉自动驾驶事故汇总笔记
  20. win7(64位)下安装ubuntu14.04.4 LTS双系统操作说明

热门文章

  1. 转载【IDEA】向IntelliJ IDEA创建的项目导入Jar包的两种方式
  2. 这个顶会论文复现比赛,单篇最高现金奖3W!
  3. 科研实习 | 北京大学计算机学院杨智老师组招收系统方向科研实习生
  4. 今日arXiv精选 | 13 篇 ICCV 2021 最新论文
  5. 香港大学顾佳涛:非自回归神经机器翻译 | 直播预告
  6. poj 1664 放苹果 DPDFS
  7. 【MyBatis使用】 mapper文件未编译 + statementType使用 + 返回结果字段顺序不一致 + 获取自增ID + 一个update标签批量更新记录
  8. springboot 配置资源映射路径
  9. Mybatis映射文件动态SQL语句-01
  10. Windows——蓝屏[失败的操作:WdFilter.sys]解决方案