【问题标题】:POSIX: perror() - what does "MT-Safe race:stderr" mean?POSIX:perror() - “MT-Safe race:stderr”是什么意思?
【发布时间】:2018-07-04 09:30:26
【问题描述】:

请有人帮助我理解 POSIX 安全概念,尤其是对于perror()。手册页指出perror() 是“MT-Safe race:stderr”。由于perror() 输出到标准错误,我想了解给定的竞争条件对实现意味着什么。

这是否意味着stderr 上的输出可能是混合的,或者还有其他人必须关心的事情?

【问题讨论】:

标签: posix


【解决方案1】:

这意味着perror 写入stderrstderr 不是线程安全的。竞争条件意味着如果多个线程同时写入stderr,您可能会得到交错输出。

POSIX requires most functions to be thread-safe:

本卷 POSIX.1-2017 定义的所有函数都应是线程安全的,但以下函数1不需要是线程安全的。

perror 不在该列表中。

【讨论】:

  • 谢谢。交错输出对我来说是可以接受的(也是我所期望的)。这意味着 stderr 不受可能使我的应用程序崩溃的竞争条件的影响。对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 2011-08-12
  • 2017-06-11
  • 2018-03-05
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多