我在第一次运行完成后立即运行相同的脚本时遇到问题。该脚本如下所示:
#!/bin/bash
./program1 &
./program2 &
./program3
wait
简而言之,内部三个C++程序需要同时运行,并且它们通过成对的套接字连接相互通信。第一次运行时,一切正常。但是,当我在第一个脚本之后重新运行脚本时,它根本不起作用。它也没有给出任何错误。如果我等待一段时间然后再次运行它,它又可以正常工作了。我无法弄清楚这种行为的根本原因。如果您能帮助我理解它,我会很高兴。
答案1
您所描述的似乎表明问题出在 C++ 程序中:当多个实例运行时,它们无法找到正确的进程进行通信。这解释了为什么只有当您“在第一个脚本之后”再次运行脚本时它才会失败,以及为什么如果您稍等一下再重试它就可以正常工作。
据推测,当您第一次尝试重新运行时,C++ 程序仍在运行,这会导致问题,并且如果您在启动之间稍等一下,它们就会完成,这就是它们按预期工作的原因。