如何在Windows上向Perl发送信号?

tze*_*nes 3 c# perl signals

我有一些perl代码,它建立了一个信号处理程序:

$SIG{'KILL'} = sub {
....
};
Run Code Online (Sandbox Code Playgroud)

我的任务是将其移植到Windows,我想知道如何从C#类生成此信号.

我看到类中的Process.Kill方法System.Diagnostics.Process似乎允许我创建(通过另一种方法)并终止我的进程,但我无法弄清楚如何将信号发送到perl脚本.

Ben*_*igt 6

您可能正在考虑TERM信号处理程序,因为KILL无法捕获.无论如何,Windows不使用信号,虽然它允许你使用它们,但它只在一个线程内,不向其他进程发送信号.

您有各种其他IPC机制,通常用于请求另一个进程正常退出PostMessage(WM_QUIT),但这实际上只适用于Perl脚本通常不适用的图形应用程序.

Windows上一个受到良好支持的方法是父进程创建一个事件(带有可继承标志)并将句柄传递给子进程,将它放入环境对Perl来说非常方便.然后,孩子可以响应该事件执行动作.

除了窗口消息和内核事件之外,您还可以使用任何套接字,管道,文件,邮件槽,进程退出代码,共享内存,注册表项和DDE来在Windows上的进程之间进行通信.