如何在linux中等待一个程序的多个实例完成?

时间:2015-08-06 09:43:21

标签: c linux bash wait waitpid

如何等待同一程序的多个实例完成?以下是我的任何建议或指示?

我需要重新启动正在运行的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;

1 个答案:

答案 0 :(得分:0)

基本上,您正在寻找进程间同步机制,即进程间信号量和进程间互斥。

我想到的两种方法是POSIX semaphores和较早的System V semaphores。我会推荐前者。

另请查看此SO reply

希望这会有所帮助:)