我在Windows服務器(批處理文件,java,perl,csharp腳本/應用程序的混合)上運行各種進程。這些過程使用Autosys啓動。在Windows上autosys劑總是前綴我在「CMD/C」作業定義爲命令(見下例)Autosys:KILLJOB事件離開孤立進程
C:\Windows\system32\cmd.exe /C foobar.exe
這本身是沒有問題的,但是當我嘗試通過發送殺工作一個autosys KILLJOB事件(按照Autosys文檔向該進程發送一箇中斷並接着發送kill信號),foobar.exe不會被終止,而是被殺死的父級cmd.exe。 foobar.exe最終成爲一個孤兒進程,我們需要登錄到服務器手動終止它使用任務管理器。
有沒有人有任何解決方案,以便來自autosys的終止信號傳播到實際過程?
謝謝。
謝謝,我能夠在文檔中找到它。我嘗試捕獲foobar.exe中的SEND_SIGNAL事件,Autosys代理程序終止該過程時信號不通過。我有一個解決此問題的方法,編寫一個捕獲其父pid的進程包裝程序可執行文件(以便它獲得啓動進程的autosys代理的句柄),然後啓動子進程。當父pid終止時,進程封裝器會等待並監視父pid,它會清理並終止所有子進程。迄今爲止,這似乎運作良好。 – 2012-08-02 13:32:35