2016-02-28 27 views
2

D(相当稀疏)的官方文档没有任何关于在* nx或Windows上处理系统信号的问题。如何处理或检测D中的系统信号?

system模块仅具有EndianOSsyserror仅用于Windows ERRORTEXT弃用/和signals约为消息传递,而不是系统的信号。

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

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

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

回答

4

这是相同的,如C,只是用进口,而不是包括。找到一个看起来很有意思的C例子,如果您只使用标准C signal函数,则将#include<signal.h>更改为import core.stdc.signal;;如果使用0123ix等Posix函数,则更改为import core.sys.posix.signal;,然后记住将回调标记为(如果使用) extern(C)(以及最近版本的D,@nogc nothrow),然后其余代码应按照与C相同的方式编译为D。