在linux中有流i / o的真实文件吗?

时间:2015-11-17 17:13:32

标签: linux bash stream

我对i/o streamlinux的概念感到困惑 有3种类型的流:标准输入。标准输出和标准误差 ram或硬盘中是否存在stdinstdoutstderr的真实文件?
例如:内核将所有键盘输入写入stdin文件?然后bash(例如)读取此文件?
如果这是真的,这意味着任何软件都可以随时读取此文件吗?

2 个答案:

答案 0 :(得分:2)

每个进程(至少最初)都为它打开了标准的stdin / stdout / stderr文件句柄。每个进程在/ proc中都有一个表示,它是由内核创建的虚拟文件系统,用于访问有关进程的各种内容。所以......

marc@panic:~$ ps
  PID TTY          TIME CMD
 4367 pts/0    00:00:00 bash     <--- my bash process
 4394 pts/0    00:00:00 ps
marc@panic:~$ cd /proc/4367/fd   <---my bash processes's /proc file descriptors
marc@panic:/proc/4367/fd$ ls -l
total 0
lrwx------ 1 marc marc 64 Nov 17 11:17 0 -> /dev/pts/0
lrwx------ 1 marc marc 64 Nov 17 11:17 1 -> /dev/pts/0
lrwx------ 1 marc marc 64 Nov 17 11:17 2 -> /dev/pts/0
lrwx------ 1 marc marc 64 Nov 17 11:18 255 -> /dev/pts/0

文件012对应于stdin,stdout,stderr,它们只是我登录会话正在使用的特定伪终端的符号链接。

答案 1 :(得分:0)

我不会将这些真实文件称为,但是:

您可以在Linux上使用/dev/stdout等。