当线程遇到我设置的特定信号时,我试图为线程设置默认行为。在所有参考代码中,我发现它们使用了 SIGUSR1/2,该信号不是为 Windows 定义的,并且它们使用诸如
sigemptyset()
和 sigaction()
之类的函数。我知道 Windows 有一个 signal()
函数来实现 Windows 中的相同功能,但仍然存在另一个问题,即使用什么信号,因为它们不提供任何额外或未使用的信号,而只提供重要或必要的信号用于代码运行。所以我想问是否有办法在Windows中自己定义像SIGUSR这样的信号?
我目前正在使用 mingw-w64ucrt 获取更多信息
不要依赖
signal
来获取跨平台代码。
只做两套源代码会更容易(也更可靠)——Linux 的信号捕获和 Windows 的事件处理。将这些集合放在不同的目录和/或子库中,并在 makefile 中选择一个或另一个。
首先阅读此处:https://learn.microsoft.com/en-us/previous-versions/ms811896(v=msdn.10)#signals-and-signal-handling 它甚至有一个很好的表格来描述如何在窗口上替换每个单独的信号。