2015-06-20 41 views
3

我正在爲Rust編寫一個Windows的小外殼,並想殺死我產生的Command,並防止我的外殼退出。有沒有辦法在Windows上收聽信號

有沒有一種方法來捕獲在Rust中等效的Windows SIGINT

+0

Windows控制檯(conhost.exe)在附加進程(例如'CTRL_C_EVENT')中生成事件。控制檯進程可以爲這些事件設置處理程序。如果進程使用微軟的C運行時,它會安裝一個處理程序,調用標準C SIGINT信號的註冊處理程序。如果rust使用CRT,它可能會提供一種機制來忽略SIGINT,或者至少一些可以調用C'signal(SIGINT,SIG_IGN)'或Win32'SetConsoleCtrlHandler(NULL,TRUE)'的接口。 – eryksun

+0

我知道我可以使用FFI,但是我會_like_(不需要)以某種本地方式來執行此操作。 (如果有人告訴我我需要使用FFI,我會以這種方式接受答案) – lines

+0

是的,我說'SIGINT等價'是有原因的。 – lines

回答

0

a crate,chan-signal,旨在幫助處理這個,通過產卵線程,並讓它等待信號。

編輯:它目前不支持窗口。

an RFC要求將此功能集成到語言的標準庫中,但它非常年輕。

看來你的選擇是去FFI。

+0

如果你使用FFI的方式,請考慮對信號做出貢獻,作者是[尋求支持](http://burntsushi.net/rustdoc/chan_signal/#platform-support-no-windows-support)那個前面。 – iajrz

相關問題