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