栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

对stdin,stdout和stderr感到困惑?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对stdin,stdout和stderr感到困惑?

标准输入 -这是您的过程读取以获取您的信息的 文件句柄

标准输出 -您的进程将正常信息写入此文件句柄。

标准错误 -您的进程将错误信息写入此文件句柄。

这就是我所能做到的愚蠢:-)

当然,这主要是按照惯例。如果您愿意,没有什么可以阻止您将错误信息写入标准输出。您甚至可以完全关闭三个文件句柄,并打开自己的I / O文件。

当您的进程开始时,它应该已经打开了这些句柄,并且可以从中读取和/或写入它们。

默认情况下,它们可能已连接到您的终端设备(例如

/dev/tty
),但是通过Shell,您可以在进程开始之前(这些进程中的某些)在这些句柄与特定文件和/或设备(甚至是通往其他进程的管道)之间建立连接。可能的操作相当聪明)。

一个例子是:

my_prog <inputfile 2>errorfile | grep XYZ

这将:

  • 为创建一个过程
    my_prog
  • 打开
    inputfile
    作为标准输入(文件句柄0)。
  • errorfile
    作为标准错误打开(文件句柄2)。
  • 为…创建 另一个 过程
    grep
  • 将的标准输出附加
    my_prog
    到的标准输入
    grep

发表您的评论:

当我在/ dev文件夹中打开这些文件时,为什么我再也看不到正在运行的进程的输出?

这是因为它们不是普通文件。尽管UNIX将 所有内容都
以文件形式显示在文件系统中的某个位置,但是在最低级别上却并非如此。

/dev
层次结构中的大多数文件是字符设备或块设备,实际上是设备驱动程序。它们没有大小,但确实有主设备号和次设备号。

打开它们时,您连接的是设备驱动程序,而不是物理文件,并且设备驱动程序足够聪明,可以知道应该单独处理单独的进程。

Linux

/proc
文件系统也是如此。这些不是真实的文件,只是对内核信息进行严格控制的网关。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号