当前位置: 首页 > 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://www.xdnf.cn/news/1470043.html

相关文章:

  • baml:为提示工程注入工程化能力的Rust类型安全AI框架详解
  • 【完整源码+数据集+部署教程】广告牌实例分割系统源码和数据集:改进yolo11-dysample
  • MySQL数据库备份攻略:从Docker到本地部署
  • JAiRouter 0.7.0 发布:一键开启 OpenTelemetry 分布式追踪,链路性能全掌握
  • 环境搭建与你的第一个 Next.js 应用
  • 嵌入式单片机---串口通信及相关通信技术
  • PPIO上线kimi-k2-0905,编码能力大幅提升
  • 阿里云ESA 没有数据发送到SLS的解决
  • Linux调试命令速查:Java/微服务必备
  • 代码版本控制
  • C++ 异常
  • android嵌入式开发入门
  • GD32入门到实战34--ARM启动流程
  • 大模型——剪枝、量化、蒸馏、二值化
  • 一招快速识别你的电脑是机械硬盘还是固态硬盘
  • 笔记三 FreeRTOS中断
  • 虚拟机详细图文教程系列15、Linux虚拟机Centos8系统部署禅道开源项目
  • 如何修改drawio中的线条样式(将实线变为虚线)
  • unsloth笔记:基本介绍
  • SAP官方授权供应商名单2025
  • 神经网络|(十九)概率论基础知识-伽马函数·下
  • JavaSE丨IO流全解:从基础概念到序列化实战
  • 树莓派传感器扩展板资料
  • VMWare上搭建大数据集群
  • 8. Mono与IL2Cpp简介
  • mysql中null值对in子查询的影响
  • B.50.10.03-Nginx核心原理与电商应用
  • 基于STM32单片机FM调频TEA5767功放收音机液晶显示设计
  • Zynq-7000 上 RT-Thread 的 MMU 与 SMP 优势分析
  • 七彩喜智慧养老:科技向善,让“养老”变“享老”的智慧之选