2016-02-28 58 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。