我对i/o stream
中linux
的概念感到困惑
有3种类型的流:标准输入。标准输出和标准误差
ram或硬盘中是否存在stdin
,stdout
和stderr
的真实文件?
例如:内核将所有键盘输入写入stdin
文件?然后bash(例如)读取此文件?
如果这是真的,这意味着任何软件都可以随时读取此文件吗?
答案 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
文件0
,1
,2
对应于stdin,stdout,stderr,它们只是我登录会话正在使用的特定伪终端的符号链接。
答案 1 :(得分:0)
我不会将这些真实文件称为,但是:
您可以在Linux上使用/dev/stdout
等。