以下简化(printf / echo / cd / sleep / progressbar命令无关紧要)bash shell脚本在第一次执行二进制文件后终止。为什么是这样?我可以在不修改二进制文件的情况下进行或测试任何东西(只能在一定程度上这样做吗?)
PROGRESS=0
SIMULATIONS=30
for number in $(seq ${PROGRESS} ${SIMULATIONS})
do
echo 'INB4 TERMINATION'
nohup ./binary -someflag
# do other stuff next
echo 'NEVER GETS HERE'
done
我已阅读了traps
,但添加了这一行:
trap "echo 'trap invoked'; exit" SIGHUP SIGINT SIGTERM
nohup
与否{似乎无关紧要。二进制文件
它运行一个3D机器人模拟实验(它本身一次分别运行2个机器人模拟器进程(使用C / C ++ system()命令)。此外,每个机器人模拟器为16个机器人控制器中的每一个启动一个线程)。所以二进制文件是32个线程的父进程。如果这有意义,那有关系吗?
答案 0 :(得分:0)
我刚刚发现了导致它的原因。我从某个地方拉出了一个进度条bash函数,并在./binary之后调用了该函数。这导致我的脚本停止...我只是没想到它是原因,因为它没有输出任何东西。这是一个愚蠢的假设。
为了完整性,这是我使用的进度条: https://github.com/fearside/ProgressBar/