簡體   English   中英

如何在Windows上向Perl發送信號?

[英]How do I send a signal to Perl on Windows?

我有一些perl代碼,它建立了一個信號處理程序:

$SIG{'KILL'} = sub {
....
};

我的任務是將其移植到Windows,我想知道如何從C#類生成此信號。

我在System.Diagnostics.Process類中看到了Process.Kill方法,它似乎允許我創建(通過另一種方法)並終止我的進程,但我無法弄清楚如何將它發送到perl腳本。

您可能正在考慮TERM信號處理程序,因為無法捕獲KILL 無論如何,Windows不使用信號,雖然它允許你使用它們,但它只在一個線程內,不向其他進程發送信號。

您有各種其他IPC機制,通常請求另一個進程正常退出的是PostMessage(WM_QUIT) ,但這實際上只適用於Perl腳本通常不適用的圖形應用程序。

Windows上一個受到良好支持的方法是父進程創建一個事件(帶有可繼承標志)並將句柄傳遞給子進程,將它放入環境對Perl來說非常方便。 然后,孩子可以響應該事件執行動作。

除了窗口消息和內核事件之外,您還可以使用任何套接字,管道,文件,郵件槽,進程退出代碼,共享內存,注冊表項和DDE來在Windows上的進程之間進行通信。

作為操作系統,Windows不支持信號。 Windows上的Perl模擬了信號

  • 按Ctrl-C

  • 您可以向同一Perl程序的其他線程發送信號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM