代码之家  ›  专栏  ›  技术社区  ›  Mikhail

一段时间后中止程序

  •  0
  • Mikhail  · 技术社区  · 14 年前

    我正在为一个程序开发一个测试用例,如果测试用例运行超过4秒,我希望它失败。 如何在Linux上实现这一点?(我用的是Ubuntu)

    我知道我可以为执行计时,但这只是一个糟糕的方法。

    谢谢!

    3 回复  |  直到 14 年前
        1
  •  0
  •   Lekensteyn    14 年前

    (Shell脚本解决方案) 在后台运行测试用例,获取其PID,并在4秒后检查进程是否仍在运行。

    wait_seconds=4
    interval_seconds=0.5
    run_your_test_case &
    pid=$!
    max=`expr "$wait_seconds / $interval_seconds"`
    for (( I=0; I<$max; I++ ));do
        if kill -0 $pid >/dev/null;then
           echo 'test failed'
        else
           echo 'test ok'
           break
        fi
        sleep $interval_seconds
    done
    
        2
  •  0
  •   Mikhail    14 年前

    最终解决方案:

      1 ./slowprogram.sh >/dev/null &
      2 pid=$!
      3 exitbreak=0
      4 for c in {0..4}; do
      5         sleep 1
      6         kill -0 $pid 2>/dev/null
      7         if [ $? -ne 0 ] ;then
      8             exitbreak=1
      9             break
     10         fi
     11 done
     12 if  [ $exitbreak == 1 ]; then
     13         echo '[ OK ]'
     14 else
     15         echo '[FAIL]'
     16         kill -9 $pid 2>/dev/null 
     17 fi
    
        3
  •  0
  •   Glen Solsberry    14 年前

    你也可以做一些像 <command> & sleep 5 && kill ${!}