在我的C ++应用程序中,我需要捕获信号SIGSEGV
,所以在Linux上它很容易,但在Windows上我有一个问题:来自另一个线程的信号没有被处理程序捕获。 / p>
#include <signal.h>
#include <iostream>
#include <thread>
void setPosixSignalHandler() {
signal(SIGSEGV, [&](int sig) {
std::cout << "Received SIGSEGV" << std::endl;
exit(EXIT_FAILURE);
});
}
void f() {
raise(SIGSEGV);
}
int main() {
setPosixSignalHandler();
std::thread t(f);
t.join();
return 0;
}
如果我删除多线程而不是像魅力一样工作。 是否可以为所有线程设置单个处理程序?
我正在使用MinGW64。