是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。

文件描述符及其作用

对于 Linux 而言,所有对设备和文件的操作都使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。

通常,一个进程启动时,都会打开 3 个文件:标准输入、标准输出和标准出错处理。这3 个文件分别对应文件描述符为 0、1和2也就是宏替换 STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO,鼓励读者使用这些宏替换)。

可以如下查看LINUX默认的文件描述符,总共有1024个,对于大多数情况下是够用的:

# ulimit -n1024

文件描述符的优点:兼容POSIX标准,许多和系统调用都依赖于它。

文件描述符的缺点:不能移植到UNIX以外的系统上去,也不直观

基于文件描述符的输入输出函数:

open:打开一个文件,并指定访问该文件的方式,调用成功后返回一个文件描述符。

creat:打开一个文件,如果该文件不存在,则创建它,调用成功后返回一个文件描述符。

close:关闭文件,进程对文件所加的锁全都被释放。

read:从文件描述符对应的文件中读取数据,调用成功后返回读出的字节数。

write:向文件描述符对应的文件中写入数据,调用成功后返回写入的字节数。

ftruncate:把文件描述符对应的文件缩短到指定的长度,调用成功后返回0。

lseek:在文件描述符对应的文件里把文件指针设定到指定的位置,调用成功后返回新指针的位置。

fsync:将所有已写入文件中的数据真正写到磁盘或其他下层设备上,调用成功后返回0。

fstat:返回文件描述符对应的文件的相关信息,把结果保存在struct stat中,调用成功后返回0。

fchown:改变与打开文件相关联的所有者和所有组,调用成功后返回0。

fchmod:把文件描述符对应的文件的权限位改为指定的八进制模式,调用成功后返回0。

flock:用于向文件描述符对应的文件施加建议性锁,调用成功后返回0。

fcntl:既能施加建议性锁也能施加强制性锁,能建立记录锁、读取锁和写入锁,调用成功后返回0。

dup:复制文件描述符,返回没使用的文件描述符中最小的编号。

dup2:由用户指定返回的文件描述符的值,用来重新打开或重定向一个文件描述符。

select:同时从多个文件描述符读取数据或向多个文件描述符写入数据。

linux 打开文件表 文件描述符,文件描述符-mjsc1023-ChinaUnix博客相关推荐

  1. linux下查看cpu物理个数和逻辑个数 - chw1989的专栏 - 博客频道 - CSDN.NET

    linux下查看cpu物理个数和逻辑个数 - chw1989的专栏 - 博客频道 - CSDN.NET [plain] view plaincopyprint? hadoop@chw-desktop3 ...

  2. Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发

    Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发 Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构 ...

  3. 算法java语言描述_java语言描述数据结构与算法崔笑颜的博客

    java语言描述数据结构与算法崔笑颜的博客 冒泡排序 插入排序 选择排序 希尔排序 快速排序 归并排序 二分查找package com.demo.test; import java.util.Arra ...

  4. 大文件表空间+创建大文件表空间+查询数据库表空间类型信息+查询数据库表空间类型信息...

    1用于解决存储文件大小不够的问题 2与普通表空间不同的地方在于大文件表空间只对应唯一一个数据文件或临时文件,普通表空间可最多1022个数据文件或临时文件 3大文件表空间对应文件可达4G个数据块大小,普 ...

  5. lr 获取html格式,Lightroom Tips:LR导入RAW的技巧,一步搞定RAW的文件风格(非教科书版本) | 周鸣超博客...

    我的博客正式上线了,在以后的日子里面,我至少每个周六都会更新一篇文章,关于Lightroom.Photoshop或者是我自己的一些拍摄照片,部分Lr或者Ps的小技巧不是从书上能学的到的,而是我日常使用 ...

  6. BootStrap使用方法为BootStrap3添加jquery.min.js文件(简单易懂)_☆往事随風☆的博客

    为BootStrap3添加jquery.min.js文件 一.前言 二.BootStrap简介 三.BootStrap3的使用方法 (1)先去官网找到BootStrap3这个版本的文档. (2)配置B ...

  7. linux基础操作_吃鱼的小脸猫_新浪博客

    一.系统的目录结构(文件系统) Linux是多用户(而权限的问题是针对于多用户的) Windows是单用户 系统的目录结构: 1. /bin : 可执行程序(命令) 2. /boot : 内核,与系统 ...

  8. iOS中 Bugly iOS 符号表手动配置详细教程 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博!iOS开发者交流QQ群: 446310206 官方教程 官方的符号表工具iOS文档版­使用指南不是很详细,于是自己动 ...

  9. pmta linux视频,PowerMTA (PMTA) 的安装和设置方法 – 黄忠 – 博客

    本文信息本文由方法SEO顾问发表于2016-12-0316:04:40,共 1870 字,转载请注明:PowerMTA (PMTA) 的安装和设置方法 – 黄忠 – 博客_[方法SEO顾问],如果我网 ...

  10. 查看Linux下文件和文件夹大小_莫枫恋_新浪博客

    当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.     du可以查看文件及文件夹的大小. ...

最新文章

  1. Struts和Sitemesh整合,实现多个装饰器
  2. 使用PHP处理POST上传时$_FILES数组为何为空
  3. RS485 串口调试如何操作
  4. C语言试题二十九之编写函数int function(int lim,int aa[max])求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
  5. sqlite查询乘以某列如果是null就换成_大数据之Hive group by with cube/rollup分组查询...
  6. ASP中随机函数Randomize的使用
  7. ubuntu java android_Ubuntu中为Android系统实现内置Java应用程序测试Application Frameworks层的硬件服务...
  8. 结巴(jieba)分词器入门
  9. pcl之将QVTKWidget添加到QtCreator
  10. php中获取不到当前元素,PHP 中数组获取不到元素
  11. C语言流程图生成器的具体操作流程是什么,分享绘制C语言流程图方法
  12. 微信小程序图片显示不出来的解决方案
  13. postman使用手册
  14. 【LaTeX入门】15、在文章中添加脚注
  15. 基于AD7705的32路AD采集
  16. 【转贴】常识普及:广府人是越佬族
  17. 7-33 电话聊天狂人
  18. 如何搭建Telegram群机器人
  19. 【归并排序】基础代码
  20. kermit配置文件

热门文章

  1. MYSQL.版本查看-LINUX
  2. 【MySQL经典案例分析】 Waiting for table metadata lock
  3. 【转载】Role of RL in Text Generation by GAN
  4. sigaction函数学习
  5. error: declaration of 'cv::Mat R ' shadows a parameter
  6. Java GC如何判断对象是否为垃圾
  7. Alpha版本项目展示要求
  8. 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法...
  9. 这么烂的游戏也能卖2000万吗?
  10. 矩阵分析与多元统计11 Kronecker乘积