【问题标题】:How multiple process are able to use STDIN/STDOUT simultaneously?多个进程如何能够同时使用 STDIN/STDOUT?
【发布时间】:2017-05-17 05:31:35
【问题描述】:

多个进程如何同时访问STDIN、STDOUT。而且它们每个都有自己的实例独立运行而不会在其他进程 i/o 中引起问题?

【问题讨论】:

  • tty“共享”通过posix终端控制、作业控制、会话、进程组进行管理。阅读相关文档(非常技术性)。 stdin/stdout 通常是 ttys 的文件句柄并且是进程私有的,它们本身不会造成任何麻烦,问题是它们是否连接到同一个“设备”,这是通过我提到的进行管理的。
  • 至少对于标准输出,许多进程可以写入标准输出,即使它们最终写入同一个文件(或控制台)。输出只是混合在一起。

标签: c linux linux-kernel operating-system


【解决方案1】:

STDIN 和 STDOUT 只是 I/O 流的别名。每个进程都有自己的 STDIN 和 STDOUT。

但是,两个进程可以将自己的 STDIN 和 STDOUT 映射到同一个流。结果很奇怪。

尝试在后台运行多个读取和写入控制台的程序。

系统避免混乱的方法是通过系统保护。普通用户无法从终端运行程序,该程序可以读写其他人的终端。

但是,如果您想通过运行多个读取和写入您的控制台/终端的程序来搞砸自己,系统不会保护您免受自己的伤害。

【讨论】:

  • 系统是如何做到的?任何资源以获取更多信息?
  • 在太监中,它们是前三个文件号。每个进程只抓取自己的。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2018-05-30
  • 2012-03-30
  • 2015-03-16
  • 2014-02-14
  • 2011-06-19
  • 2017-04-16
  • 1970-01-01
  • 2012-05-20
相关资源
最近更新 更多