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

cat*_*cat 3 signals d

D(相当稀疏)的官方文档没有关于在*nx或Windows上处理系统信号的任何信息.

system模块只有EndianOS,syserror已被弃用/仅对Windows ERRORTEXT,并且signals是大约消息传递,而不是系统的信号.

是否有一种方法(在纯D中)安装信号处理程序,捕获并允许我在运行时对某些信号作出反应,或者至少是一种检测信号被接收的方法和我可以的异常catch

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

import signal
signal.signal(signal.SIGSEGV, myFunctionToHandleSEGV)
# ...
Run Code Online (Sandbox Code Playgroud)

Ada*_*ppe 5

它与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.