2017-04-11 104 views
7

Perl 6有方法accept signalssend a signal to a Proc::Async。儘管[p5-p6 perlfunc]文檔說殺死與Perl 5非常相似,但並不是因爲您不能將信號發送到任意進程ID(doc issue filed)。我有一個特定的程序,我想在Perl 6中編寫(爲了咯咯笑),但由於缺乏可靠的kill而被迫回到Perl 5。如何將信號發送到Perl 6中的進程ID?

短缺脫殼killtasklist(和taskkill),這是我們將不得不做的事情。在S29中有一個殺手,但顯然不在覈心文檔中。我還沒有碰到任何討論哪些決定會導致各種遺漏的哲學傾向的文件。

據我所知,靶向許多系統虛擬機具有挑戰,當涉及到操作系統,具體的東西,但我不知道如果是這樣的原因,我們不能有很好的東西,如kill(可能是更好的命名signal如果你重新開始;)和exec

回答

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') {}; 
+0

我想過,但我需要它的Windows了。 NativeCall雖然很酷,但是我擔心很多人會討厭'#ifdef'這個長長的列表來爲每一個系統填充它。 –