【问题标题】:c++ pipe: does it wait on writec ++管道:它是否等待写入
【发布时间】:2011-06-27 11:06:03
【问题描述】:

我使用管道在进程之间进行通信。当我写入管道并且读取它的速度比写入慢时,write() 会阻塞直到可以对管道进行原子写入?

【问题讨论】:

    标签: unix pipe


    【解决方案1】:

    是的,至少当正在写入的字节数小于保证是原子的字节数时。

    【讨论】:

      【解决方案2】:

      write() 不需要写入所有传递的数据 - 它可以写入更少,您必须检查实际写入了多少。

      【讨论】:

        【解决方案3】:

        符合 POSIX 的系统应该阻塞。

        来自 write(2) 手册页:

        "POSIX 要求可以证明在 write() 返回后发生的 read(2) 返回新数据。请注意,并非所有文件系统 符合 POSIX”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-28
          • 2013-06-21
          • 2016-01-02
          相关资源
          最近更新 更多