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

时间:2016-02-28 18:22:22

标签: signals d

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

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

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

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

catch

1 个答案:

答案 0 :(得分:5)

它与C中的相同,只是导入而不是包含。找到一个看起来很有趣的C示例,如果您只使用标准C #include<signal.h>函数,则将import core.stdc.signal;更改为signal;如果您使用Posix函数,则将import core.sys.posix.signal;更改为sigaction比如extern(C),然后记得用@nogc nothrow标记你的回调(如果你使用的话)(在最新版本的D中,line = "C:\\recipe\\1,C:\\recipe\\2,C:\\recipe\\3," print(line.split(',')) 也是如此),然后其余的代码应该编译与D中的方式相同。