[問題] 偵測背景執行結束

看板Linux作者 (lorrance)時間14年前 (2011/12/29 00:13), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/2 (看更多)
我有個shell script 裡面執行了三個程式在背景執行 ....... program1 & program2 & program3 & ....... 想請問板上的各位高手,由於我接下來的動作,需要抓取 此三個程式結束所產生的檔案再進行處理,有沒有什麼方法 可以偵測到這些背景執行的程式已經結束了呢? 麻煩大家給點方法和提示! 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.64.45

12/29 01:21, , 1F
man wait? 雖然我也不會,不過看起來是這個
12/29 01:21, 1F

12/29 01:26, , 2F
試試看這樣:
12/29 01:26, 2F

12/29 01:26, , 3F
./program1 &
12/29 01:26, 3F

12/29 01:26, , 4F
wait $!; ./postporcess
12/29 01:26, 4F

12/29 07:29, , 5F
由於你一次要等3個process,用C寫一個負責fork/exec/wait的
12/29 07:29, 5F

12/29 07:30, , 6F
小程式是最簡單的. 如果C或這部分的system call不熟,那就
12/29 07:30, 6F

12/29 07:30, , 7F
在shell中用ps和grep定期檢查3個child process的pid是否仍
12/29 07:30, 7F

12/29 07:31, , 8F
在,只要任一個在,就sleep然後迴圈再檢查
12/29 07:31, 8F

12/29 11:37, , 9F
感謝以上高手們的提示,我去試試看~
12/29 11:37, 9F

12/30 19:19, , 10F
一次等3個process用xargs會比較好...
12/30 19:19, 10F

12/30 23:59, , 11F
echo 'p1\np2\np3'|xargs -d \\n -n 1 -P 3 -i
12/30 23:59, 11F

12/30 23:59, , 12F
bash -c {} &
12/30 23:59, 12F
文章代碼(AID): #1E-q0CUo (Linux)
文章代碼(AID): #1E-q0CUo (Linux)