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

时间:2010-09-11 01:17:52

标签: c# perl signals

我有一些建立信号处理程序的perl代码:

$SIG{'KILL'} = sub {
....
};

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:0)

作为操作系统,Windows不支持信号。 Windows上的Perl模拟了

的信号
  • Ctrl-C键

  • 您可以向同一个Perl程序的其他线程发送信号。