Tag:

flock():删除没有竞争条件的锁定文件?

我正在将flock()用于进程间命名的互斥锁(即某些进程可以决定对“some_name”进行锁定,这是通过在temp目录中锁定名为“some_name”的文件来实现的: lockfile = “/tmp/some_name.lock”; fd = open(lockfile, O_CREAT); flock(fd, LOCK_EX); do_something(); unlink(lockfile); flock(fd, LOCK_UN); 应该在某个时候删除锁定文件,以避免使用数百个文件填充临时目录。 但是,此代码中存在明显的竞争条件; 进程A,B和C的示例: A opens file A locks file B opens file A unlinks file A unlocks file B locks file (B holds a lock on the deleted file) C opens file (a new file one is created) C locks file […]