C语言如何判断文件是否可读写

环境是linux环境,怎么可以用C语言实现判断一个文件是否被其他程序占用,如果被占用了,就等10秒重新判断是否被占用这个功能?最好能有可用的源码。。。看了下回答,也就是说... 环境是linux环境,怎么可以用C语言实现判断一个文件是否被其他程序占用,如果被占用了,就等10秒重新判断是否被占用这个功能?最好能有可用的源码。。。

看了下回答,也就是说,需要将文件加锁,如果成功了证明文件未被占用,那么以后我就可以读了是么。那如果我读完文件之后呢?锁还在咩?
展开
 我来答
ducky8688
2012-07-27 · TA获得超过753个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:99.8万
展开全部
这个需要对文件加锁才能,可以用fcntl函数实现
int lock(const char * filepath )
{
int fd = 0;
struct flock flock;
memset( &flock, 0, sizeof(flock) );

fd = open( filepath, O_RDWR,S_IRUSR|S_IWUSR );
if ( fd < 0 )
{
printf("open error!\n");
return ( -1 );
}
flock.l_type = F_WRLCK;
flock.l_whence = SEEK_SET;
flock.l_start = 100000;
flock.l_len = 0;
if ( fcntl( fd, F_SETLK, &flock ) ) //加锁,如果失败则等待10秒
{
printf("cannot set lock\n");
printf("the process will retry after 10 seconds\n");
sleep(10); //不同版本的sleep单位可能不一样,有的是秒有的是毫秒,你自己看着改
if ( fcntl( fd, F_SETLK, &flock ) ) //加锁,如果失败则退出
return( -1 );
}
return( 0 );
}
后面的你懂吧
潜珈蓝志rf
2012-07-27 · 超过40用户采纳过TA的回答
知道答主
回答量:432
采纳率:0%
帮助的人:145万
展开全部
以读取的方式打开文件,如果失败,就等待10s,然后再读取
File *fp;
fp = fopen("C:\\1.TXT","at+");
while(!fp)
{
sleep(10000);
fp = fopen("C:\\1.TXT","at+");
}
上面是不停的循环的隔10s读取,直到打开为止。
如果你就尝试几次读取,可以自己再设定循环读取次数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
slionls
2012-07-27 · TA获得超过266个赞
知道小有建树答主
回答量:322
采纳率:100%
帮助的人:228万
展开全部
尝试读取该文件,如果失败就说明该文件被占用
while(1)
{
if (fread(&buffer, sizeof(buffer), 1,f p1) == 0)
{
Sleep(10000);
}
else
break;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式