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