c - Bash,如何检查 C 程序是否超时
问题描述
我想在 bash 脚本中运行编译为 foo 的 C 程序 foo.c 并查看它是否超时。
foo 有一个参数和 10 秒超时。我想检查程序 foo 是否超时或执行。如果超时,我想退出 0。
#!/bin/sh
# -*-sh-*-
/foo $1 10
if [$? -eq 0]
then
exit 0;
fi
exit 1;
解决方案
使用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。
推荐阅读
- ajax - 在 AJAX 调用中显示和隐藏 Spinner 时出现问题
- azure-devops - 在哪里可以找到新导航下的每人冲刺能力栏?
- updates - 当您有多个服务器版本时,如何构建自动更新桌面应用程序,并且每个服务器版本之间存在重大更改?
- ios - 归档构建时预期的“语言”、“定义的_in”或“生成的声明”
- macos - MacOS - 屏幕解锁时切换 wifi
- c# - XML-Warnings 不会在带有 ReSharper 18.2 的 Studio 17 中显示
- php - 比较键上的两个数组,如果键不匹配,则创建多个数组集值
- dart - Flutter:具有多个小部件的自定义抽屉
- java - 从Android(JAVA)的Json(序列化形式)中检索数据
- sensors - 有哪些很好的资源可以了解 IMU 的传感器漂移校正?