[英]How do I send a signal to ELSA workflow using C#, SendSignal and SignalReceived activities?
[英]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.