关于Linux下,函数lockf()调用失败
写了一个测试程序,给文件aaa加锁,但是失败了,程序和结果如下:
/****************************************************************/
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
int fildes;
int status;
int i = 0;
fildes = open( "/home/webotx/catalog-dingcj/test/aaa ", O_RDWR);
if (fildes == -1) {
fprintf(stderr, "open err=%d\n ", errno);
return -1;
}
status = lockf(fildes, F_TLOCK, (off_t)10000);
if (status != 0) {
fprintf(stderr, "err=%d\n ", errno);
} else {
fprintf(stderr, "lock ok\n ");
}
}
/****************************************************************/
输出结果:err=37
请问:Linux下系统锁的数量有上限吗,是不是可以配置?
[解决办法]
/proc/locks可以看到有关文件锁的一些信息(如锁类型,对应的pid,文件所在的设备主次设备号,文件inode,锁范围等)。解锁的话没听说有什么方法,理论上温和的方法应该不可行,除非kill掉对应的进程。
系统锁不记得有上限,如果有除非是memory不够...