How can I send a signal to a process ID in Perl 6?

人盡茶涼 提交于 2020-01-03 09:38:48

问题


Perl 6 has ways to accept signals and to send a signal to a Proc::Async. Although the [p5-p6 perlfunc] docs says that kill works much like is does in Perl 5, it doesn't because you can't send a signal to an arbitrary process ID (doc issue filed). I had a particular program I wanted to write in Perl 6 (for giggles), but was forced to fall back to Perl 5 for lack of a reliable kill.

Short of shelling out to kill or tasklist (and taskkill), is this something we'll just have to do without. There's a kill in S29, but apparently not in the core docs. I haven't run across any docs of a more philosophical bent discussing what decisions drive various omissions.

I understand that a virtual machine that targets many systems has challenges when it comes to operating system specific stuff, but I don't know if that's the reason we can't have nice things such as kill (probably better named signal if you are starting over ;) and exec.


回答1:


I know you are looking for language support, but anyone finding this question who really needs a solution, can use NativeCall. For instance, to use the native kill on Linux (renamed to syskill for sanity):

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


来源:https://stackoverflow.com/questions/43357541/how-can-i-send-a-signal-to-a-process-id-in-perl-6

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!