| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 991 人关注过本帖
标题:flock锁定文件问题
只看楼主 加入收藏
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
 问题点数:0 回复次数:2 
flock锁定文件问题

我们都知道 flock可以在一个进程中锁定目标文件~
但是锁定后的文件(未解锁)却可以在另外的一个进程中打开(open函数);
这是为什么?

那flock还有啥用?按道理来说 被锁定的文件应该打不开才对把~?

我做的程序只能靠判断这个文件是否还能再被锁 来判断该文件目前状态(LOCK_EX or LOCK_UN);

这是我程序其中的一段代码(在fork()之中);

void ftp::sock_upload(char message[],struct sockaddr_in &remote_addr,int &commandfd,int &datafd,char aaa[])
{
/* 获取文件名*/
char file[20]=" ";
int i=0;
while(aaa[i+5]!='\r')
{
file[i]=aaa[i+5];
i++;
}
file[i]='\0';


int fd;

fd = open(file,O_WRONLY|O_CREAT);
if(flock(fd,LOCK_EX|LOCK_NB)== - 1) /*判断文件是否能被锁,如果不能锁的话,表示文件正在被使用*/
{
sock_send(commandfd,"450 the file is uing \r\n",23);
shutdown(datafd,2);
}
else
if(sock_connect(datafd,remote_addr));
{
sock_send(commandfd,"150 opneing data connection for\r\n",34);
char ccc[DATAMAX];
int n=DATAMAX;
while(n!=0)
{
n=sock_recv(datafd,ccc,DATAMAX);
write(fd,ccc,n);
}
sock_send(commandfd,"226 file received complete\r\n",28);

flock(fd,LOCK_UN);
close(fd);
shutdown(datafd,2);
}

}

请明白flock的朋友给讲讲~谢谢了~

搜索更多相关主题的帖子: flock 文件 LOCK fork sock 
2007-10-22 16:55
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
得分:0 
顶自己下~没人知道吗?

2007-10-24 08:46
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
得分:0 

今天再来顶~求答案~


2007-10-25 16:52
快速回复:flock锁定文件问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023656 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved