请问一个文件加锁的问题。

renyi0746 2005-03-09 03:41:47
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>

main(int argc, char **argv)
{
int file;
struct flock lockss;

file = open(argv[1],O_RDWR);
if(!file)
{
printf("open %s error\n",argv[1]);
exit(0);
}

int n=0;
/*for(n=0; n<100; n++)
{
write(file,"a",1);
}*/
/*write(file, "\n", 1);*/
memset(&lockss, 0 , sizeof(lockss));

lockss.l_type = F_WRLCK;
lockss.l_whence = SEEK_SET;
lockss.l_start = 1;
lockss.l_len=100;
//lock1.l_pid=getpid();

int res;
res = fcntl(file, F_SETLKW, &lockss);
fflush(stdout);
//res = lockf(file, F_LOCK, 100);
if(res==-1)
{
printf("Process %d lock file %s failed.\n",getpid(), argv[1]);
exit(0);
}
else
{
printf("%s is locked by %d.\n",argv[1], getpid());
printf("res is %d \n",res);
}

sleep(60);

close(file)
}
我又用另一个程序去改写加锁部分为什么还能成功呢,加锁过程没报错。
...全文
34 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
9653013 2005-03-09
  • 打赏
  • 举报
回复
另外程序,要测试是否加锁啊,如果加了,你就报错退出。
你直接去改文件,当然成功了。
即:锁是应用的锁,需要自己判断。

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧