日期:2014-05-16  浏览次数:20751 次

关于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不够...