|
linux下用C语言做算法实验,编写了shell脚本来while循环运行算法程序来针对不同的数据集进行计算。
这时,奇怪的事情发生了!
对某些数据集(不确定,有时顺利运行到退出)运算的时候,程序居然变为睡眠状态,导致实验
胶着在这里,无法继续往下进行!
本来在程序里面设置了定时器,当运行时间超过时限便退出;但现在程序跑去睡觉了,程序里面的
计时器也不起作用了!
哪位xdjm可以告诉我为什么会发生这种事情?
之前程序一直都不会有这样的问题,这两天对程序修改了一下(多了内存的频繁malloc和free),
就出现了这种情况。
同学提醒我可以在shell里面设置这样的定时器,避免程序无法退出,但是我对shell了解的并不深入,
从网上找到了下面的shell定时器例子,还是不知怎么做?
哪个大哥可以给个思路???感激不尽。
定时器例子:
#! /bin/sh
AlarmHandler() {
echo "Got SIGALRM, cmd took too long."
KillSubProcs
# exit 14
}
KillSubProcs() {
kill ${CHPROCIDS:-$!}
if [ $? -eq 0 ] ; then echo "Sub-processes killed." ; fi
}
SetTimer() {
DEF_TOUT=${1:-10};
if [ $DEF_TOUT -ne 0 ] ; then
sleep $DEF_TOUT && kill -s ALRM $$ &
CHPROCIDS="$CHPROCIDS $!"
TIMERPROC=$!
fi
}
UnsetTimer() {
kill $TIMERPROC
}
# main()
trap AlarmHandler ALRM
SetTimer 15
# Command to run
# For Testing
#sleep 60 &
#
CHPROCIDS="$CHPROCIDS $!"
wait $!
echo $?
UnsetTimer
echo "All Done."
#exit 0 |
|