如何确定程序的执行停止事件

时间:2014-03-14 23:16:49

标签: unix sh

我有一个脚本,当基准(某些c代码,如矩阵乘法)运行时记录某些数据。

我想在基准测试开始时首先启动日志脚本,这很简单,因为我可以从日志脚本启动二进制文件然后继续记录信息。

但真正的问题是我什么时候停止它?基准测试可以随时停止(日志脚本不应该停止基准测试)。当基准程序停止时,如何获取可用于日志脚本的信息/变量以阻止它?

我在想是否可以使用基准测试的PID,但后来认为应该有比搜索和使用PID更好的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

也许你可以尝试这样的事情:

#!/bin/bash
#
# Your main script
#

# Run your log program in background
your_log_program &

# The PID of last background program
LOGPROGRAMPID=$!

# Install EXIT trap  (EXIT is a bash's special event)
trap 'kill -15 $LOGPROGRAMPID; exit 0' EXIT
# In foreground launch your benchmark program
run_your_benchmark_program

# When benchmark program ends your trap will be launched and it will kill your log
# program.