POSIX 信号处理函数里为什么不能随意 printf、malloc 或加锁?
信号可能在任意指令点打断当前线程,许多库函数持有内部锁或修改全局状态,重入会死锁或破坏数据。Handler 只能调用异步信号安全函数,常见做法是设置 sig_atomic_t 标志或写 Self-Pipe/Eventfd 通知主循环。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
信号可能在任意指令点打断当前线程,许多库函数持有内部锁或修改全局状态,重入会死锁或破坏数据。Handler 只能调用异步信号安全函数,常见做法是设置 sig_atomic_t 标志或写 Self-Pipe/Eventfd 通知主循环。