如何等待同一程序的多个实例完成?以下是我的任何建议或指示?
我需要重新启动正在运行的C进程。经过长时间的谷歌搜索后,我发现重启只能通过fork和exec完成(我需要新的实例有一个不同于原始实例的pid因此只使用exec不会工作)。以下是我所做的序列。
Shell 1:
Bash script
1. Start the first instance(./test.exe lets say pid 100)
2. Wait for it complete(pid 100) <<< Here need to wait for all instances of test.exe to complete
Shell 2:
1. Send a signal to above process(pid-100)
2. In signal handler had fork(new pid 200) a new process with exec command(./test.exe --restart) and kill parent (pid 100)
现在我的问题是如何在shell1的bash脚本中等待所有test.exe实例完成?(基本上要等到pid 200完成) 用我当前的方法shell1的bash脚本在我发送信号杀死pid 100后立即退出
更新
其实我正在寻找一些bash / unix命令来等待test.exe的所有实例都完成。像 - &#39;等待$(pgrep -f test.exe)&#39;
答案 0 :(得分:0)
基本上,您正在寻找进程间同步机制,即进程间信号量和进程间互斥。
我想到的两种方法是POSIX semaphores和较早的System V semaphores。我会推荐前者。
另请查看此SO reply。
希望这会有所帮助:)