zoukankan      html  css  js  c++  java
  • 文件描述符

    参考:https://www.jb51.net/article/138686.htm

    前言

    Linux将所有内核对象当做文件来处理,系统用一个size_t类型来表示一个文件对象,比如对于文件描述符0就表示系统的标准输入设备STDIN,通常情况下STDIN的值为键盘,如read命令就默认从STDIN读取数据,当然STDIN的值是可以改变的,比如将其改成其他文件,这样的话想read等命令就会默认从相应的文件读取数据了。

    默认标准文件描述符

    每个进程启动时默认都会有三个标准的文件描述符:

    • stdin 0 号描述符, 代表输入设备, 进程从它读入数据;
    • stdout 1 号描述符, 进程往其中写入数据;
    • stderr 2 号描述符, 进程会往其中写入错误信息;

    文件描述符的操作

    Shell 中对文件描述符的操作由三部分组成: (Left, Operation, Right):

    • Left 可以是 0-9 的数字, 代表第 n 号文件描述符;
      Left 还可以为 &, 表示同时操作 stdout 和 stderr
    • Right 可以是文件名或 0-9 的数字, 当 Right 是数字时必须要加上 & 符号, 表示引用第 n 号文件描述符;
      Right 还可以为 &-, 此时表示关闭 Left 描述符, 例如 2<&- 表示关闭 stderr;
    • Operation 可以为 < 或 >;
      为 < 时表示以读模式复制 Right 到 Left, 此时如果没有指定 Left 的话, 则为默认值 0;
      当为 > 表示以写模式复制 Right 到 Left, 此时如果没有指定 Left 的话, 则为默认值 1;
      Operation 和 Left 之间不能有空格;
      当 Right 为文件名时, Operation 和 Right 可以有空格, 否则也不能有空格;

    当存在多个文件描述符的操作时, 会按照从左往右的顺序依次执行. 例如通过命令 cmd 3>&1 1>&2 2>&3 3>&- 就可以交换 stdin 和 stdout.

  • 相关阅读:
    eclipse maven 插件 安装 和 配置
    Windows下 maven3.0.4的安装步骤+maven配置本地仓库
    js中转换Date日期格式
    Java 集合类详解
    java的反射机制
    Java 单例模式详解
    Http协议与TCP协议简单理解
    初识JavaScript,Ajax,jQuery,并比较三者关系
    MyBatis
    MyEclipse、Eclipse优化设置
  • 原文地址:https://www.cnblogs.com/jmliao/p/11219617.html
Copyright © 2011-2022 走看看