2012-05-16 29 views
0

已解決 我需要在MakeFile中產生後臺進程,並考慮它們的退出代碼。 場景:在MakeFile中聆聽後臺進程的退出代碼

  • 幾個進程在後臺催生。
  • 生成文件繼續評估(不要想檢查子進程的PID在一些循環的等等)
  • 一些過程與非零退出代碼退出
  • 與非零退出代碼
  • make程序退出

當然,我認爲使用command &在後臺產生一個進程。

問題:如果像command &指定的命令然後進行處理跟蹤它的退出代碼。

樣品1個

do: 
     @false & \ 
     echo "all is normal" 


%make -f exit_status_test.mk 
all is normal 

樣品2

do: 
     @false && \ 
     echo "all is normal" 


%make -f exit_status_test.mk 
*** Error code 1 

Stop in /usr/home/scher/tmp/lock_testing. 

樣品1所顯示,使實用程序不考慮後臺進程退出代碼。

P.S.請不要建議存儲產生的進程PID,並檢查它們的延遲等等。需要繼續評估MakeFile並自動退出非零代碼。

解決方案

do: 
     @(echo "background command" ; (echo "[HANDLER] Prev command exits with $$?")) & \ 
     echo "doing something" 

因此,我們可以創建一個命令序列來處理後臺進程的退出狀態。

+2

製作並沒有這樣做。 – bmargulies

回答

0

這似乎是一個拙劣的嘗試創建Makefile,可以並行運行多個任務的時候,其實化妝一般可以爲你做這個。

所有你需要做的就是給每一個作業進行單獨的命令:

target: job1 job2 

job1: 
    some_command 

job2: 
    some_other_command 

如果您在Makefile再使用這樣的運行make -j2 target,那麼這兩個some_commandsome_other_command將並行運行。

看看你是否可以找到一種方式來獲得使在這樣的並行運行工作。

+0

我認爲是不恰當的生成文件我用,因爲它是從FreeBSD的Ports Collection bsd.port.mk工作。所有手冊狀態儘可能準確,-j選項,並寫信給你做文件使用此選項兼容。 – scherka

相關問題