我对这三个文件的目的感到困惑。如果我的理解是正确的,stdin则是程序在其中写入其在进程中运行任务的请求stdout的文件,是内核在其中写入其输出以及请求其从中访问信息的进程stderr的文件,并且是该文件。输入所有例外。在打开这些文件以检查它们是否确实发生时,我似乎没有任何暗示!
stdin
stdout
stderr
我想知道的是这些文件的用途到底是什么,用很少的技术术语就可以完全肯定答案!
标准输入 -这是您的过程读取以获取您的信息的 文件句柄 。
标准输出 -您的进程将正常信息写入此文件句柄。
标准错误 -您的进程将错误信息写入此文件句柄。
这就是我所能做到的愚蠢:-)
当然,这主要是按照惯例。如果您愿意,没有什么可以阻止您将错误信息写入标准输出。您甚至可以完全关闭三个文件句柄,并打开自己的I / O文件。
当您的进程开始时,它应该已经打开了这些句柄,并且可以从中读取和/或写入它们。
默认情况下,它们可能已连接到您的终端设备(例如/dev/tty),但是通过Shell,您可以在进程开始之前(这些进程中的某些)在这些句柄与特定文件和/或设备(甚至是通往其他进程的管道)之间建立连接。可能的操作相当聪明)。
/dev/tty
一个例子是:
my_prog <inputfile 2>errorfile | grep XYZ
这将:
my_prog
inputfile
errorfile
grep
发表您的评论:
当我在/ dev文件夹中打开这些文件时,为什么我再也看不到正在运行的进程的输出?
这是因为它们不是普通文件。尽管UNIX将 所有内容都 以文件形式显示在文件系统中的某个位置,但是在最低级别上却并非如此。/dev层次结构中的大多数文件是字符设备或块设备,实际上是设备驱动程序。它们没有大小,但确实有主设备号和次设备号。
/dev
打开它们时,您连接的是设备驱动程序,而不是物理文件,并且设备驱动程序足够聪明,可以知道应该单独处理单独的进程。
Linux /proc文件系统也是如此。这些不是真实的文件,只是对内核信息进行严格控制的网关。
/proc