【问题标题】:Why is snprintf not considered async safe?为什么 snprintf 不被认为是异步安全的?
【发布时间】:2021-06-04 15:26:05
【问题描述】:

我只是在信号处理程序中编写了一些调试程序,并注意到从the man7 website 开始,snprintf 没有被列为异步安全函数。我认为这只会修改局部变量,所以我想知道为什么这不是异步安全的?

【问题讨论】:

    标签: linux glibc signal-handling


    【解决方案1】:

    为什么这不是异步安全的?

    虽然snprintf(和sprintf)往往在信号处理程序中工作得很好,但它们并不能保证工作。

    我认为这只会修改局部变量,

    这些函数可能需要初始化语言环境机制,这绝对不是异步信号安全的。

    【讨论】:

    • 所以你建议它可能使用共享全局机制,其中一些变量是每个线程的,因此可以与 snprintf 的其他实例共享。使用 tend 这个词,您是在暗示大多数系统可能是异步安全的,或者您是在暗示竞态条件如此之小,它们tend 没有命中?跨度>
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 2019-10-11
    • 2021-02-04
    • 2014-03-08
    • 2014-03-26
    • 2011-08-13
    • 2012-11-19
    • 2020-01-03
    相关资源
    最近更新 更多