如何在Perl 6中向进程ID发送信号?

时间:2017-04-11 22:57:16

标签: signals perl6

Perl 6提供了accept signalssend a signal to a Proc::Async的方法。虽然[p5-p6 perlfunc]文档说杀戮的工作方式与Perl 5中的相似,但它并不是因为你不能向任意进程ID(doc issue filed)发送信号。我有一个我想在Perl 6中编写的特定程序(用于咯咯笑),但由于缺乏可靠的kill而被迫退回到Perl 5。

如果不是killtasklist(以及taskkill),那么这就是我们不得不做的事情。在S29中有一个杀戮,但显然不在核心文档中。我还没有碰到任何一个更具哲学思想的文档,讨论哪些决策会导致各种遗漏。

我知道针对许多系统的虚拟机在操作系统特定的内容方面存在挑战,但我不知道这是不是因为我们不能拥有这样的好东西。作为kill(如果您重新开始,可能更好地命名为signal;)和exec

1 个答案:

答案 0 :(得分:5)

我知道你正在寻找语言支持,但是任何发现这个问题的人真正需要解决方案,都可以使用NativeCall。例如,要在Linux上使用本机kill(为了理智而重命名为syskill):

use NativeCall;
# syskill( PID, SIGNAL ) -> 0 if sent, -1 if error, see "man 2 kill"
sub syskill(uint32, int32) returns int32 is native is symbol('kill') {};