0
我想在後臺運行一個程序,收集一些性能數據,然後在前臺運行一個應用程序。當前臺應用程序完成時,它檢測到這一點並在後臺關閉應用程序。問題是,當後臺應用程序關閉時沒有先關閉文件,我假設文件的輸出保持空白。有沒有辦法不斷地寫輸出文件,以便如果後臺應用程序意外關閉輸出保存?Shell腳本終止程序,但導致輸出文件不被寫入
這裏是我的shell腳本:
./background_application -o=output.csv &
background_pid=$!
./foreground_application
ps -a | grep foreground_application
if pgrep foreground_application > /dev/null
then
result=1
else
result=0
fi
while [ result -ne 0 ]
do
if pgrep RPx > /dev/null
then
result=1
else
result=0
fi
sleep 10
done
kill $background_pid
echo "Finished"
我有機會爲C語言編寫的後臺應用程序的源代碼++這是一個基本的循環和運行fflush(OUTPUTFILE)每次循環。
我只是想,如果前臺應用程序也被關閉殺後臺應用程序。輸出文件保持空白,除非後臺應用程序正確關閉。我想知道是否有辦法將文件永遠寫入,如果後臺應用程序關閉數據不會丟失。 – kaminsknator
修改了在殺死後臺應用程序之前將_output.csv_複製到_output_last_look.csv_的答案。請檢查生成的副本是否具有所需的輸出數據。注意:在上面的代碼中,前臺應用程序位於_foreground_中 - 因此'kill'只會在前臺應用程序關閉後發生。 – agc
當後臺應用程序正在運行時,它會創建輸出文件,但在程序正常關閉之前它是空的。感謝您的幫助,我會嘗試shell腳本 – kaminsknator