-3

在远程主机中,我想运行 3 个程序 A 、 B 和 C 但我希望它们在不同的时间运行,所以如果 A 正在运行,B 和 C 就无法运行

我的想法是在这些程序之间创建一个互斥锁,例如进程之间的互斥锁

最初的想法是创建一个互斥体,例如,当 A 运行时,它会锁定这些东西,这样 B 和 C 就无法访问或写入这些东西,然后 B 和 C 知道有一个程序正在运行,他们等到东西是畅通的

这些东西可能是文件或其他东西

谁能给出一些想法?我希望我可以使用 shell 脚本进行操作,比如

 if file is unlocked; then
 lock file
./programA
 unlock file
 fi

谢谢

4

2 回答 2

0

您可以使用标准的 pthread 互斥锁,但您需要使用pthread_mutexattr_setpshared()函数将其属性显式初始化为“进程共享”。然后,您可以将互斥锁传递给共享内存中的其他进程。

于 2013-04-27T16:50:08.057 回答
0

您使用锁定文件的想法实际上是一个相当普遍的习惯用法。它通常用于确保一次运行的程序不超过一个副本。通常,该文件被命名为类似~/.foo_lock或标识程序的~/foo/.lock位置。foo

我不记得这通常是如何实现的细节,但尝试man flock作为一个起点。我不记得有一个开源程序的名字。然而,我认为,这gnucash将是一个这样的程序,以及众多的邮件客户端。

于 2013-04-27T18:54:36.857 回答