LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 967|回复: 0

shell下定时器问题

[复制链接]
发表于 2008-3-6 13:24:17 | 显示全部楼层 |阅读模式
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表