c 中的跨平台信号

问题描述 投票:0回答:1

当线程遇到我设置的特定信号时,我试图为线程设置默认行为。在所有参考代码中,我发现它们使用了 SIGUSR1/2,该信号不是为 Windows 定义的,并且它们使用诸如

sigemptyset()
sigaction()
之类的函数。我知道 Windows 有一个
signal()
函数来实现 Windows 中的相同功能,但仍然存在另一个问题,即使用什么信号,因为它们不提供任何额外或未使用的信号,而只提供重要或必要的信号用于代码运行。所以我想问是否有办法在Windows中自己定义像SIGUSR这样的信号? 我目前正在使用 mingw-w64ucrt 获取更多信息

c signals mingw-w64
1个回答
0
投票

不要依赖

signal
来获取跨平台代码。 只做两套源代码会更容易(也更可靠)——Linux 的信号捕获和 Windows 的事件处理。将这些集合放在不同的目录和/或子库中,并在 makefile 中选择一个或另一个。

首先阅读此处:https://learn.microsoft.com/en-us/previous-versions/ms811896(v=msdn.10)#signals-and-signal-handling 它甚至有一个很好的表格来描述如何在窗口上替换每个单独的信号。

© www.soinside.com 2019 - 2024. All rights reserved.