在远程主机中,我想运行3个程序A,B和C. 但我希望他们在不同的时间运行 所以如果A正在运行,B和C就无法运行
我的想法是在这些程序中创建一个互斥锁 像进程之间的互斥锁
最初的想法是创建一个互斥的东西 例如,当A运行时,它会锁定这些东西 所以B和C不能访问或写东西 然后B和C知道有一个程序正在运行,他们等到东西被解锁
这些东西可能是文件或其他东西
任何人都可以提出一些想法吗? 我希望我可以使用shell脚本,比如
if file is unlocked; then
lock file
./programA
unlock file
fi
感谢
答案 0 :(得分:0)
您可以使用标准的pthread互斥锁,但是您需要使用pthread_mutexattr_setpshared()函数明确地将其属性初始化为“process-shared”。然后,您可以将互斥锁传递给共享内存中的其他进程。
答案 1 :(得分:0)
您使用锁文件的想法实际上是一种相当常见的习惯用法。它通常用于确保一次只运行一个程序副本。通常,文件的名称类似于~/.foo_lock
或~/foo/.lock
,其中foo
标识程序。
我不记得通常如何实现这一点的详细信息,但请尝试man flock
作为起点。我无法回想起这个开源程序的名称。但是,我认为,gnucash
将是一个这样的程序,以及许多邮件客户端。