Cod*_*der 13 process lock concurrency
我需要确保一个进程一次只在一个实例中执行。在 Windows 上,您可以使用命名互斥锁。但我不知道在 Linux 上使用什么。
我想我已经看到一种方法是应用程序创建一个独占文件,但我再也找不到它了。您是否使用常规文件功能,忙循环?
str*_*ika 10
如果您只想运行一个应用程序实例,则可以使用锁定文件。用标志打开它,O_CREAT|O_EXCL如果文件已经存在,它将失败。
O_CREAT|O_EXCL
如果要同步对文件的访问,请使用flock. 也可以使用fcntl. Flock 仅用于建议锁定,这意味着程序可以忽略锁定并无论如何都可以访问它。强制锁定是可能的,fcntl但它需要一个特殊的挂载选项和特殊的文件权限。
flock
fcntl
semget和semop可用于进程间同步太。
semget
semop
归档时间:
14 年 前
查看次数:
28715 次
最近记录:
5 年,11 月 前