标题: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-179826-1-1.html




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

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