每天进步一点点——Linux中的文件描述符与打开文件之间的关系

2023-10-31

转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239


1. 概述
    在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。POSIX标准要求每次打开文件时(含socket)必须使用当前进程中最小可用的文件描述符号码,因此,在网络通信过程中稍不注意就有可能造成串话。标准文件描述符图如下:
文件描述与打开的文件对应模型如下图:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每天进步一点点——Linux中的文件描述符与打开文件之间的关系 的相关文章

  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 如何在C(Linux utf8终端)中打印“盒子抽屉”Unicode字符?

    我正在尝试显示 方框图范围 2500 257F 中的 Unicode 字符 它应该是标准 utf8 Unicode 标准 版本 6 2 我根本做不到 我首先尝试使用旧的 ASCII 字符 但 Linux 终端以 utf8 显示 并且没有显示
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • 如何在线程创建和退出时调用函数?

    include
  • 如何在 Linux 上通过 FTP 递归下载文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh

随机推荐

  • 计算机主机指什么,通常所说的计算机的主机是指什么

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 通常所说的计算机的主机是指cpu和内存 计算机 一般是指 电子计算机 电子计算机 electronic computer 通称电脑 是现代一种用于高速计算的电子计算机器 可
  • Java异常之自定义异常

    自定义异常类自定义异常 1 使用 Java 内置的异常类可以描述在编程时出现的大部分异常情况 除此之外 用户还可以自定义异常 用户自定义异常类 只需继承 Exception 类即可 2 在程序中使用自定义异常类 大体可以分为以下几个步骤 创
  • Widgetkit是什么?

    最近在研究Joomla 发现了一个叫Widgetkit的组件 Widgetkit是什么来的 有什么用呢 它是Yootheme推出的一个综合应用解决方案 它广泛用于Joomla 和Wordpress中 在Widgetkit组件里有很多效果 比
  • ERROR: No matching distribution found for setuptools_scm

    安装paddlenlp时遇到这个问题 解决办法 先把setuptools卸载掉 pip uninstall setuptools 然后重新安装 pip install setuptolls scm pip install seqeval
  • 虚幻引擎 遇到的问题总结

    初学UE 遇到很多问题 这里记录一下 防止以后忘记 还会不断添加 语言设置 UE的中文翻译很多地方翻译的并不是很好 照着视频学习的话还是英文版的比较好 Edit 编辑 gt Editor preferences 编辑器偏好设置 gt Reg
  • Linux下的g++使用总结

    什么是g 和gcc 都是编译器 准确的说都是GNU 组织 的一个编译器 区别 后缀为 c的文件gcc把它当做c程序 g 当做c 程序 后缀为c 的两者都当做c 程序 对于cpp程序 无论gcc或者是g 编译阶段都是相同的 都是用的gcc进行
  • ChatGPT一分钟做流程图

    ChatGPT一分钟做流程图它能不能帮我们制作流程图呢 必须是可以的 今天我们再来介绍一个如何用ChatGPT快速制作流程图的方法 下面以PowerBI分析流程为例 先向ChatGPT进行提问 你是一个高级数据分析师 熟悉数据分析的每个流程
  • 在PPPoE拨号宽带上使用IPv6(Cisco路由器)

    本文于2019年1月成文 在2020年3月进行了修订 更正了部分配置命令的使用 本地联通运营商已经开通了家用宽带的IPv6 通过单独电脑PPPoE拨号证实可用 但是 显然现在几乎没有人用电脑直接拨号了 那么 如何能在不改变现有网络拓扑的情况
  • 印度欲自研系统以替代 iOS 和 Android;基于 OpenJDK 17 的龙芯平台 Java 环境发布;Python 即将支持 WebAssembly

    开源吞噬世界的趋势下 借助开源软件 基于开源协议 任何人都可以得到项目的源代码 加以学习 修改 甚至是重新分发 关注 开源日报 一文速览国内外的开源大事件吧 整理 苏宓 一分钟速览新闻点 基于 OpenJDK 17 的龙芯平台 Java 环
  • Golang Web框架fiber

    Golang Web框架fiber fiber简介 fiber起步 fiber配置 fiber上下文context fiber app fiber常量 fiber中间件 基本认证BasicAuth fiber中间件 缓存 fiber中间件
  • React 类组件和函数组件

    React 类组件和函数组件 目录 1 类组件和函数组件 2 如何使用 props 和 state 3 如何绑定事件 4 复习 this 两个面试题 组件component 一 概念 Element VS Component 元素与组件 不
  • 怎样用pycharm连接数据库,以及常见报错如何解决

    1 下载插件工具 点击file点击setting点击plugins 搜索database navigator点击install进行下载 然后重启pycahrm 2 使用插件 重启pycharm后最上边的工具栏会多一个DB Navigator
  • 第一章 复变函数与积分变换 知识点总结(Jeff自我感悟)

    第一章 复变函数与积分变换 知识点总结 Jeff自我感悟
  • 矩阵求逆_伴随矩阵法

    1 基本知识 首先展示一个 n n n阶行列式 D
  • 重庆永川实现停车自由 百度地图助力打造西部智能交通新样板

    停车难 已成为制约现代城市健康发展的一大瓶颈 停车信息不通畅 停车场资源分配不均等问题影响着城市停车管理效率 永川位于重庆西部 是成渝地区双城经济圈枢纽节点 重庆主城都市区重要战略支点 其中心城区面积80平方公里 常住人口80万人 城镇化率
  • 【python 深度学习】解决遇到的问题

    目录 一 RuntimeError module compiled against API version 0xc but this version of numpy is 0xb 二 AttributeError module tenso
  • C++二进制文件读写简单操作

    WriteBinaryFile cpp 定义控制台应用程序的入口点 include stdafx h include
  • Mysql8.0重置初始密码输入mysqld --console --skip-grant-tables --shared-memory无效

    Mysql8 0重置初始密码的方式网上有很多按照步骤来就行了 但是在使用mysqld console skip grant tables shared memory时会发现这个设置是无效的 没起来什么作用 导致无法免密登录 不同的情况解决的
  • Scratch3.0 使用 Scratch Link 连接Wedo等外设

    为什么需要Scratch Link 从我之前的一些二次开发文章可以看出 Scratch 3 0不论是在线版本还是离线的桌面版都是一个Web App 出于安全性等等因素的考虑 Web App对系统接口的访问有着非常严格的限制 比如硬件文件读写
  • 每天进步一点点——Linux中的文件描述符与打开文件之间的关系

    转载请说明出处 http blog csdn net cywosp article details 38965239 1 概述 在Linux系统中一切皆可以看成是文件 文件又可分为 普通文件 目录文件 链接文件和设备文件 文件描述符 fil