Bash,如何检查C程序是否超时

时间:2018-11-13 18:57:04

标签: c bash

我想运行一个在bash脚本中编译为foo的C程序foo.c,并检查其是否超时。

foo有一个参数,并且10秒超时。 我想检查程序foo是否超时或执行。如果超时,我要退出0。

#!/bin/sh
# -*-sh-*-
/foo $1 10
if [$? -eq 0]
    then
        exit 0;
fi
exit 1;

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。