我有一些建立信号处理程序的perl代码:
$SIG{'KILL'} = sub {
....
};
我的任务是将其移植到Windows,我想知道如何从C#类生成此信号。
我在Process.Kill
类中看到System.Diagnostics.Process
方法似乎允许我创建(通过另一种方法)并终止我的进程,但我无法弄清楚如何让它发送发信号到perl脚本。
答案 0 :(得分:6)
您可能正在考虑TERM
信号处理程序,因为无法捕获KILL
。无论如何,Windows不使用信号,虽然它允许你使用它们,但它只在一个线程内,不向其他进程发送信号。
您有各种其他IPC机制,通常请求另一个进程正常退出PostMessage(WM_QUIT)
,但这实际上只适用于Perl脚本通常不适用的图形应用程序。
Windows上一个受到良好支持的方法是父进程创建一个事件(带有可继承标志)并将句柄传递给子进程,将它放入环境对Perl来说非常方便。然后孩子可以执行一个动作来响应事件。
除了窗口消息和内核事件之外,您还可以使用任何套接字,管道,文件,邮件槽,进程退出代码,共享内存,注册表项和DDE来在Windows上的进程之间进行通信。
答案 1 :(得分:0)
作为操作系统,Windows不支持信号。 Windows上的Perl模拟了
的信号Ctrl-C键
您可以向同一个Perl程序的其他线程发送信号。