如何处理或检测 D 中的系统信号?

How can I handle or detect a system signal in D?

D 的(相当稀疏的)官方文档没有任何关于在 *nx 或 Windows.

上处理系统信号的内容

system模块只有EndianOSsyserror已弃用/仅用于Windows errortext,signals是关于消息传递,而不是系统信号。

有没有办法(在纯 D 中)安装信号处理程序,捕获并允许我在运行时对某些信号做出反应,或者,至少有一种方法来检测信号是否已收到以及异常我可以catch吗?

即在Python中,一个简单的例子是:

import signal
signal.signal(signal.SIGSEGV, myFunctionToHandleSEGV)
# ...

它与 C 中的相同,只是使用导入而不是包含。找到一个您感兴趣的 C 示例,然后将 #include<signal.h> 更改为 import core.stdc.signal;(如果您仅使用标准 C signal 函数)或 import core.sys.posix.signal;(如果您使用 Posix 函数类似于 sigaction,然后记得用 extern(C) 标记你的回调(如果你使用一个)(在 D 的最新版本中,@nogc nothrow 也是),然后剩下的代码应该像在 C 中一样编译为 D。