POSIX 信号处理函数里为什么不能随意 printf、malloc 或加锁?
信号可能在任意指令点打断当前线程,许多库函数持有内部锁或修改全局状态,重入会死锁或破坏数据。Handler 只能调用异步信号安全函数,常见做法是设置 sig_atomic_t 标志或写 Self-Pipe/Eventfd 通知主循环。
01
题干
POSIX 信号处理函数里为什么不能随意 printf、malloc 或加锁?
请先给出定义,再结合嵌入式工程中的边界、错误现象和验证方式回答。
先用 30–60 秒组织自己的回答,再对照分层解析。
08