你如何在 Linux (C/C++) 中进行跨进程锁定?

Cod*_*der 13 process lock concurrency

我需要确保一个进程一次只在一个实例中执行。在 Windows 上,您可以使用命名互斥锁。但我不知道在 Linux 上使用什么。

我想我已经看到一种方法是应用程序创建一个独占文件,但我再也找不到它了。您是否使用常规文件功能,忙循环?

str*_*ika 10

如果您只想运行一个应用程序实例,则可以使用锁定文件。用标志打开它,O_CREAT|O_EXCL如果文件已经存在,它将失败。

如果要同步对文件的访问,请使用flock. 也可以使用fcntl. Flock 仅用于建议锁定,这意味着程序可以忽略锁定并无论如何都可以访问它。强制锁定是可能的,fcntl但它需要一个特殊的挂载选项和特殊的文件权限。

semgetsemop可用于进程间同步太。