- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
sigaction
设置的信号处理程序是否在其自己的线程中运行?我可以使用 Pthreads 工具将我的信号处理程序与我的主程序(如 Pthreads 互斥体)同步吗?我可以使用 C++11 工具,例如 mutex
和 atomic
吗?
抱歉,如果这个问题有点太笼统,但我真的很困惑信号和线程之间的关系。
我在 Linux 上工作,但这个问题通常适用于 UNIX。
最佳答案
没有。
唯一可以在信号处理程序中安全调用的函数是异步信号安全函数。对于 Linux,您可以在 signal.7 man page 中找到此类函数的列表。 ,在“Async-signal-safe functions”下,页面的一半以上。
任何未列为异步信号安全的函数都不能在信号处理程序中安全调用。
请注意,在 Linux 上唯一列为异步信号安全的同步函数是 sem_post()
。
关于c++ - 在 C++ 中,我可以使用多线程工具将 UNIX 信号与我的主程序同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30410514/
我有一个主程序X,它从我的网络摄像头获取数据。 我想在执行时实时配置 X。 我知道这样做的常见方法之一是使用IPC,如命名管道/Unix套接字/互联网套接字等。但我想避免每个调用者必须单独打开套接字/
信号可以在任何线程或主程序本身中接收。我从主程序创建了一个辅助线程。所以我的程序中有两个线程 1. 主线程(进程本身) 2. 辅助线程。我只希望每当信号到达我的辅助线程时,它应该向我的主线程(程序)发
我在 java 中有一个主类,它调用 JFrame Two。 但在调用 JFrame Two 之前,我的主要检查一个条件,如果为真,则调用 JFrame One。 所以,我的 main 不扩展 JFr
我正在尝试编译一个 C++ 程序,但它不起作用。首先,我应该说 c++ 不是我真正了解的语言,我使用 Fortran。无论如何,主要的 c++ 程序调用一个 fortran 子例程。我可以编译这个子例
我正在尝试将 Rust 绑定(bind)到 nbdkit,但运气不佳。我需要制作一个 .so 文件,这很简单。 .so 文件必须有一个名为 plugin_init 的公共(public)函数,这也很简
QT 似乎是最好的跨平台 GUI 工具包。不幸的是,它是在 C++ 中,它与许多有趣的语言(例如 *nix 上的 D、Rust、Julia 和 Mono)的绑定(bind)要么不可用,要么没有维护。
我有一个 Maven 项目,它在 src 文件夹中的一个包中有 2 个主程序(MyTestApp_A 和 MyTestApp_B)。 如果我打开它们并单击运行按钮,我可以在 Eclipse 中运行这些
我是一名优秀的程序员,十分优秀!