在一定时间后中止程序

发布于 2024-09-17 11:05:10 字数 137 浏览 4 评论 0原文

我正在尝试为程序开发一个测试用例,并且希望如果运行时间超过 4 秒,则测试用例会失败。 在Linux上如何做到这一点? (我使用的是Ubuntu)

我知道我可以计算执行时间并失败时间> 4,但这只是一个糟糕的方法。

谢谢!

I'm trying to develop a test case for a program, and would like to fail the test case if it runs over 4 seconds.
How can this be done on linux? (I'm using Ubuntu)

I know I can time the execution and fail it time > 4, but that's just a bad approach.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笑脸一如从前 2024-09-24 11:05:11

(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

(shell script solution)
Runs your testcase in background, get the PId of it, and checks after 4 seconds if the process is still running.

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
猫腻 2024-09-24 11:05:11

最终解决方案:

  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

Final solution:

  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
拥抱没勇气 2024-09-24 11:05:11

您还可以执行类似 的操作&睡眠 5 &&杀死${!}

You could also do something like <command> & sleep 5 && kill ${!}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文