我想运行一个在bash脚本中编译为foo的C程序foo.c,并检查其是否超时。
foo有一个参数,并且10秒超时。 我想检查程序foo是否超时或执行。如果超时,我要退出0。
#!/bin/sh
# -*-sh-*-
/foo $1 10
if [$? -eq 0]
then
exit 0;
fi
exit 1;
答案 0 :(得分:4)
使用timeout
命令:
timeout 10s ./foo
if [ $? -eq 124 ] ; then
exit 0
else
exit 1
fi
来自man timeout
:
如果命令超时,并且未设置--preserve-status,则以状态124退出。否则,以COMMAND状态退出。如果 未指定信号,超时时发送TERM信号。 TERM信号会杀死任何不会阻塞或捕获该信号的进程。 可能需要使用KILL(9)信号,因为无法捕获此信号,在这种情况下,退出状态为128 + 9,而不是 124。