为什么检测文件锁会出错?
fd0=open("/var/run/svtest.pid",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if(fd0<0)
{
printf("can't open open file "/var/run/svtest.pid"n");
exit(1);
}
fcntl(fd0,F_GETLK,&lock);
printf("errno:%sn",strerror(errno));
代码如上,打算测试一下文件锁功能,但编译后运行总提示errno:Invalid argument.而且fcntl的返回值也是-1.到底哪个参数是非法的呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
应该是没有问题的,不知道你在调用fcntl之前对lock的设置是什么样的,感觉是参数设置有问题或者没有设置,试试看下面的例子:
lock.l_type = F_WRLOCK;
lock.l_start = 0;
lock.l_whence = SEEK_SET;
lock.l_len = 0;
fd0=open("/var/run/svtest.pid",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if(fd0<0)
{
printf("can't open open file "/var/run/svtest.pid"n");
exit(1);
}
fcntl(fd0,F_GETLK,&lock);
printf("errno:%sn",strerror(errno));
[ 本帖最后由 xingdongcat 于 2006-6-12 17:52 编辑 ]
各位老大的文件锁都是怎么来做的呢?