全局变量不会在信号处理程序中更新,除非是像sig_atomic_t
. 鉴于以下 2 个条件,我可以在信号处理程序中安全地编辑全局变量吗?
- 如果我只定义一个信号处理程序
- 如果我使用
sa_mask
ofstruct sigaction
来阻止处理程序的所有信号 - 应用程序是单线程的
添加更多细节:我有一个小的全局链接列表,其中保存了其子进程的一些信息。一旦我捕获 SIGCHLD(在父进程中),我想在我的信号处理程序中从链接列表中删除该节点。我可以在具有上述条件并使用某种 pthread_mutex_trylock() 的信号处理程序中执行此操作吗?