2010-01-13 81 views

回答

3

它的工作原理是这样的:

#include <io.h> 
#include <sys/file.h> 
... 
int f = open ("filename", O_RDONLY); 
if (f < 0) 
     error(); 
if (flock (f, LOCK_EX)) 
     error(); 
sleep (10); 

if (flock (f, LOCK_UN)) 
     error(); 
... 
+5

请记住,这些不是强制性的锁,它们是咨询锁 - 意味着使用该文件的每个人都需要它们。如果他们不这样做,他们可以自由地操作文件。 – nos 2010-01-13 17:47:59

1

使用fcntl(2)锁定文件,然后使用alarm(2)打电话给你SIGALRM处理程序,然后将其解锁。

+1

在信号处理程序中调用'flock'安全吗? – 2010-01-13 20:29:10

+0

Hrm。 '信号(7)'说不。 'fcntl(2)'应该没问题。 – 2010-01-13 20:34:25