首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向Windows上的Perl发送信号?

如何向Windows上的Perl发送信号?
EN

Stack Overflow用户
提问于 2010-09-11 09:17:52
回答 2查看 5.8K关注 0票数 3

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

代码语言:javascript
运行
复制
$SIG{'KILL'} = sub {
....
};

我的任务是将它移植到windows上,我想知道如何从C#类生成这个信号。

我在perl类中看到了Process.Kill方法,它似乎允许我创建(通过另一个方法)和终止我的进程,但是我不知道如何让它将信号发送到System.Diagnostics.Process脚本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-11 09:24:33

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

不过,还有许多其他的进程间通信机制,通常用于请求另一个进程正常退出的机制是PostMessage(WM_QUIT),但这实际上只适用于图形应用程序,而Perl脚本通常不适用于图形应用程序。

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

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

票数 6
EN

Stack Overflow用户

发布于 2010-09-11 09:49:24

作为操作系统,Windows不支持信号。Windows上的Perl具有信号仿真,用于

  • Ctrl-C
  • You可以向同一个Perl程序的其他线程发送信号。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3689403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档