gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:47 24 4
gpt4 key购买 nike

如何等待同一程序的多个实例完成?以下是我的场景有什么建议或指示吗?

我需要重新启动一个正在运行的 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 完成)使用我目前的方法,一旦我发送信号以终止 pid 100,shell1 的 bash 脚本就会退出

更新:

实际上我正在寻找一些 bash/unix 命令来等待 test.exe 的所有实例完成。类似于 - 'wait $(pgrep -f test.exe)'

最佳答案

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

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

另请查看此 SO reply .

希望这有帮助:)

关于c - 如何在 Linux 中等待一个程序的多个实例完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31852316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com