【发布时间】:2018-07-04 09:30:26
【问题描述】:
请有人帮助我理解 POSIX 安全概念,尤其是对于perror()。手册页指出perror() 是“MT-Safe race:stderr”。由于perror() 输出到标准错误,我想了解给定的竞争条件对实现意味着什么。
这是否意味着stderr 上的输出可能是混合的,或者还有其他人必须关心的事情?
【问题讨论】:
标签: posix
请有人帮助我理解 POSIX 安全概念,尤其是对于perror()。手册页指出perror() 是“MT-Safe race:stderr”。由于perror() 输出到标准错误,我想了解给定的竞争条件对实现意味着什么。
这是否意味着stderr 上的输出可能是混合的,或者还有其他人必须关心的事情?
【问题讨论】:
标签: posix
这意味着perror 写入stderr 和stderr 不是线程安全的。竞争条件意味着如果多个线程同时写入stderr,您可能会得到交错输出。
POSIX requires most functions to be thread-safe:
本卷 POSIX.1-2017 定义的所有函数都应是线程安全的,但以下函数1不需要是线程安全的。
perror 不在该列表中。
【讨论】: