我在i/o stream
中混淆了linux
的概念。
流有三种类型:标准输入。标准输出和标准误差。
ram或硬盘中是否有用于stdin
、stdout
和stderr
的真实文件?
例如:kernel将所有键盘输入写入stdin
文件?然后bash(例如)读取这个文件?
如果这是真的,那意味着任何软件都可以在任何时候读取这个文件?
最佳答案
每个进程(至少最初)都有为其打开的标准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,它们只是指向我的登录会话正在使用的特定伪终端的符号链接。关于linux - 在Linux中是否存在用于流I/O的真实文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33763047/