当前位置: 首页 > news >正文

Linux文件描述符详解

1、关于文件描述符本身:

        进程在打开一个文件后,会在当前进程内部生成文件的描述信息结构,并且会将其地址添加到pcb的文件描述符表中,而添加位置在文件描述符表当中的数组下标,就成为了我们的文件描述符,因此两个进程产生的文件描述符是互相独立的;在多个进程同时对文件进行读写时,操作系统并不保证写的原子性(原子性通常是指一个操作能够一次性完成,不会被操作系统打断,用来描述安全性);当两个进程读取同一个文件的时候,若一个进程将文件删除,另一个进程并不会立即读写失败,因为删除一个文件只是修改了文件系统中相应分组的block bitmap等描述其是否存在的信息,在data block中其信息不会改变,而另一个进程一直都知道应该到磁盘的什么位置去读取文件,因此并不会失败

2、文件描述符和文件流指针的关系:

        文件流指针内部封装了文件描述符,是一个FILE*结构体指针,其对应的借口有fopen, fwrite,

fread, fclose等

        文件描述符是系统调用接口操作句柄,对应的借口有open, write, read, close等

3、关于dup2重定向函数:

        文件描述符表不同的位置可以存放相同的文件描述信息结构,因此就可以实现重定向操作;对于一个进程而言,两次打开同一文件其文件描述符不一定相同,因为系统是将文件描述符表的最低未使用位置的下标作为新文件的文件描述符,并不能保证这两次位置是相同的

4、关于重定向命令的写法,以在bash中,将demo.sh的标准输出和标准错误重定向到demo.log为例

标准写法:bash demo.sh 1 > demo.log 2 > &1

新奇方式:bash demo.sh >& demo.log 而这也等价于bash demo.sh &> demo.log

(这里&>表示将标准输出和标准错误进行重定向)

基本方式:bash demo.sh 2 > demo.log 1 > demo.log


文章转载自:

http://C5FGkjlo.fkyqt.cn
http://z7ilGLRi.fkyqt.cn
http://uOwQ0h0z.fkyqt.cn
http://jDZbLc40.fkyqt.cn
http://1avGvBYS.fkyqt.cn
http://kQFQAtWR.fkyqt.cn
http://x9yAEach.fkyqt.cn
http://af3y0ECI.fkyqt.cn
http://9VKJxFTK.fkyqt.cn
http://Ok3Id6Tt.fkyqt.cn
http://dkcmwiOU.fkyqt.cn
http://KZlxKeQC.fkyqt.cn
http://Y9Zxcrlp.fkyqt.cn
http://6wZOBWa9.fkyqt.cn
http://Mz4et5rd.fkyqt.cn
http://LYLWTSJB.fkyqt.cn
http://XehGGuDA.fkyqt.cn
http://SkI66yI3.fkyqt.cn
http://lMNC9A3b.fkyqt.cn
http://8rugHXRj.fkyqt.cn
http://i2eslYwR.fkyqt.cn
http://wMUu51ZN.fkyqt.cn
http://m3yAiXIk.fkyqt.cn
http://mwcmZxdr.fkyqt.cn
http://EBJl6AFY.fkyqt.cn
http://kEuyNBKz.fkyqt.cn
http://vzVuWbpl.fkyqt.cn
http://zYVnq2xD.fkyqt.cn
http://2WrMnqCJ.fkyqt.cn
http://ZDaK0Ox2.fkyqt.cn
http://www.dtcms.com/a/368482.html

相关文章:

  • 一个月学习刷题规划详解
  • 云计算学习笔记——日志、SELinux、FTP、systemd篇
  • Spring DI详解--依赖注入的三种方式及优缺点分析
  • 苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?
  • 小团队如何高效完成 uni-app iOS 上架,从分工到工具组合的实战经验
  • 华为认证HCIA备考知识点 :IP路由基础(含配置案例)
  • AI测试:自动化测试框架、智能缺陷检测、A/B测试优化
  • 从零到上线:直播美颜SDK中人脸美型功能的技术实现与效果优化
  • 大数据毕业设计选题推荐-基于大数据的高级大豆农业数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 自演化大语言模型的技术背景
  • 3D目标跟踪重磅突破!TrackAny3D实现「类别无关」统一建模,多项SOTA达成!
  • Ubuntu中使用nginx-rtmp-module实现视频点播
  • 一文教您解决win11运行Ubuntu,wsl相关命令出现系统找不到指定文件的错误提示
  • 从零开始:用uv构建并发布一个Python CLI应用,集成CI/CD自动化发布与Docker容器化部署
  • Ubuntu 文件权限管理
  • [相机成像] 彩色相机成像 “灰蒙蒙” 问题排查与解决记录
  • STM32传感器模块编程实践(十六)DIY人脸识别智能垃圾桶模型
  • vscode连接SSH
  • 在VSCode中更新或安装最新版的npx和uv工具
  • 如何选择文件夹然后用vscode直接打开
  • 命令行中如如何打开目录?vscode中如何打开目录
  • 一阶低通滤波器应用示例(演示)
  • 如何选择适合的实验室铸铁地板和铸铁试验平板?专业人士帮助指南
  • centos sshd:xxx.xxx.xxx.xxx:allow 如何设置
  • 如果要获得Ecovadis认证需要费用是多少?
  • SQL Server全链路安全防护
  • C++_数据结构
  • MySQL数据库精研之旅第十六期:深度拆解事务核心(上)
  • solidity函数篇
  • 数据库(基础操作)