如何处理或检测 D 中的系统信号?
How can I handle or detect a system signal in D?
D 的(相当稀疏的)官方文档没有任何关于在 *nx 或 Windows.
上处理系统信号的内容
system
模块只有Endian
和OS
,syserror
已弃用/仅用于Windows errortext,signals
是关于消息传递,而不是系统信号。
有没有办法(在纯 D 中)安装信号处理程序,捕获并允许我在运行时对某些信号做出反应,或者,至少有一种方法来检测信号是否已收到以及异常我可以catch
吗?
即在Python中,一个简单的例子是:
import signal
signal.signal(signal.SIGSEGV, myFunctionToHandleSEGV)
# ...
它与 C 中的相同,只是使用导入而不是包含。找到一个您感兴趣的 C 示例,然后将 #include<signal.h>
更改为 import core.stdc.signal;
(如果您仅使用标准 C signal
函数)或 import core.sys.posix.signal;
(如果您使用 Posix 函数类似于 sigaction
,然后记得用 extern(C)
标记你的回调(如果你使用一个)(在 D 的最新版本中,@nogc nothrow
也是),然后剩下的代码应该像在 C 中一样编译为 D。
D 的(相当稀疏的)官方文档没有任何关于在 *nx 或 Windows.
上处理系统信号的内容system
模块只有Endian
和OS
,syserror
已弃用/仅用于Windows errortext,signals
是关于消息传递,而不是系统信号。
有没有办法(在纯 D 中)安装信号处理程序,捕获并允许我在运行时对某些信号做出反应,或者,至少有一种方法来检测信号是否已收到以及异常我可以catch
吗?
即在Python中,一个简单的例子是:
import signal
signal.signal(signal.SIGSEGV, myFunctionToHandleSEGV)
# ...
它与 C 中的相同,只是使用导入而不是包含。找到一个您感兴趣的 C 示例,然后将 #include<signal.h>
更改为 import core.stdc.signal;
(如果您仅使用标准 C signal
函数)或 import core.sys.posix.signal;
(如果您使用 Posix 函数类似于 sigaction
,然后记得用 extern(C)
标记你的回调(如果你使用一个)(在 D 的最新版本中,@nogc nothrow
也是),然后剩下的代码应该像在 C 中一样编译为 D。