有一个crate叫做chan-signal,旨在通过生成线程并使其等待信号来帮助处理此问题。 编辑:它目前不支持Windows。 有一个RFC要求将此功能集成到语言的标准库中,但它还很年轻。 似乎您的选择是使用FFI。
CTRL_C_EVENT
。控制台进程可以为这些事件设置处理程序。如果该进程正在使用Microsoft的C运行时,则会安装一个处理程序,该处理程序调用其注册的标准CSIGINT
信号的处理程序。如果Rust使用CRT,则可能提供一种机制来忽略SIGINT
,或者至少提供一些接口,让您调用Csignal(SIGINT, SIG_IGN)
或Win32SetConsoleCtrlHandler(NULL, TRUE)
。 - Eryk Sun