fcntl设定文件锁的有关问题
发布时间:2011-06-27 19:13:00 文章来源:www.iduyao.cn 采编人员:星星草
fcntl设定文件锁的问题,求助
我想对一个文件实行排他锁,于是在dll里写了这样一个函数:
int LockWholeFile(void* fp)//fp是fopen的返回值
{
int fd;
struct flock stLock;
int nRet;
memset(&stLock, 0x00, sizeof(stLock));
fd = fileno((FILE*)fp);
TRACE("Begin to lock file,fp[%d], fd[%d]", fp, fd);
stLock.l_type = F_WRLCK;
stLock.l_whence = SEEK_SET;
stLock.l_start = 0;
stLock.l_len = 1;
nRet = fcntl(fd, F_SETLKW, &stLock);
if( nRet<0 )
{
TRACE("Lock file fp[%d] failed,errno[%d].", fp, errno);
return (-1);
}
TRACE("Lock file fp[%d] OK.", fp);
return (1);
}
然后在exe里调用LockWholeFile(fp);(确认fp有效)
但是每次执行,返回值都是-1,errno的值是14(EFAULT)
意思大概是无效的地址,百思不得其解,网上查了好些资料也没结果,郁闷:(
OS是solaris 10,64位系统。
将F_SETLKW和struct flock 换成64位的也是同样的错误,高手指点一下:(
------解决方案--------------------
F_SETLKW:行为如同F_SETLK,除了不能获取锁时会睡眠等待外。如果在等待的过程中接收到信号,会立即返回并将errno置为EINTR。
等待需要 3个条件
1 条件变量
2 互斥
3 判定
胡乱说的,
------解决方案--------------------
我用你的函数在Solaris 10试过了,很正常,没有你说的问题。还是确认在LockWholeFile前:有没有对fp做一些不合理的操作
------解决方案--------------------
其他进程是否正在使用该文件?
------解决方案--------------------
EFAULT lock is outside your accessible address space.
stLock.l_start = 0;
stLock.l_len = 1;
你的文件是不是空的?
------解决方案--------------------
我来截帖
看楼主回复内容.
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
solaris 10下的多线程和solaris 5.8下多线程编译有什么区别??
我一个在solaris 10下编译通过且能正常运行的程序,为什么在solaris 5....
-
提示 read-only file system
从网上下载了一个vmware 镜相文件,用root 登陆,但用vi, mkdir 总是提示 read-only file system
这...
-
ftp的20、21端口
如果一台机器1可以ftp到另一台机器2,则需要开通机器1到机器2的20和21端口,我在机器1上用“telnet 机器1的IP 21”...
-
Solaris10如何重启inetd服务
问题描述:SunOS(Solaris 10) Unix系统下有一个具有sudo权限的非root用户修改了/etc/services文件,请问...
-
求solaris下的类似linux的top命令,谢谢!
rt
------解决方案--------------------
你可以使用prstat或者去下载包含top命令的软件包...
-
(急!)如何在UNIX中配置Microsoft SQL Server 2000 Driver for JDBC?
UNIX环境中已设置环境变量(在.bash_profile中设置,执行:echo $CLA...
-
Solaris 压缩问题
Solaris 我打了一个tar包,它的大小有6.5G,然后我用zip去压缩的时候发现不能成功,好像zip不能压缩超过2G的文件,请问...
-
急急急unix下的Xterm指的是什么?
急急急unix下的Xterm指的是什么?在哪里可以找到这个东东?原话是这样的:“do same as above with: an...
-
solaris下面,如何看支持mount哪些类型的文件系统
mount命令本身有这样的功能么?
------解决方案--------------------
没有 一...
-
请教各位高手,有没有命令是用来查看文件格式的 unix dos
查看某个文件是unix格式还是dos格式,能用vi命令来看,但是好像不能用程序来...