gpt4 book ai didi

linux - stdin/stdout/stderr 或 cin/cout/cerr 进程安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:17 26 4
gpt4 key购买 nike

我不是在谈论线程安全,进程安全我的意思是,对于每个进程,默认情况下操作系统在启动一个新进程时打开三个文件描述符,即 stdin、stdout 和 stderr,但我们知道 UNIX 中的一切都是文件,所以我假设这些是与不同进程共享的实际物理文件

我的问题(基于假设这些是与所有进程共享的不同文件,当然如果我们有文件描述符那么我们就有文件)是:

  1. 为什么多个进程同时使用cout/cerr或stdout/stderr的输出没有交错?
  2. 不同的进程如何只共享它们编写的那部分 cout/cerr 或 stdout/stderr?

最佳答案

…as we know everything in UNIX is file…

这是一种过度概括。

I am assuming that cout and cerr are the physical files which is shared with different processes.

您的假设不正确。它们不是“物理”文件;它们没有文件名,也不存储在磁盘上。

coutcerr(通常称为 stdout 和 stderr)是文件描述符。它们可以指文件,但更常见的是指终端或管道。每个进程都有自己的一组文件描述符; stdin/stdout/stderr 只是每个进程用于输入和输出的一组标准的三个文件描述符的名称。

Why there is no interlacing between the output to cout/ cerr when multiple process use it at the same time?

另一个不正确的假设。写入相同 文件描述符的多个进程可能会导致交错输出。但是,写入不同 文件描述符的多个进程不会相互干扰。

关于linux - stdin/stdout/stderr 或 cin/cout/cerr 进程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43798510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com