免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5452 | 回复: 18
打印 上一主题 下一主题

如何实现以这样的方式打开文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-07 15:01 |只看该作者 |正序浏览
emule下载完一个任务后,将会自动在后台上传这个文件,但是我却可以从磁盘上删除这个文件,从来没发现提示错误的情况。这就奇怪了,他上传时肯定已经打开了这个文件呀,即使是只读的方式打开,既然emule在使用这个文件,怎么却可以删除它呢?
类似于这样的对文件的使用方式怎么实现? 谢谢!

论坛徽章:
0
19 [报告]
发表于 2008-02-13 11:16 |只看该作者
原帖由 lzcxh 于 2008-2-9 21:35 发表
windows下测试,无论以w+还是r方式fopen一个文件,都无法删除!

Windows打开文件可以不用标准库, CreateFile可以指定很多别的选项

论坛徽章:
0
18 [报告]
发表于 2008-02-13 11:14 |只看该作者
windows下打开文件的时候可以指定SHARE_DELETE,那样你打开了,别的程序可以删除。

论坛徽章:
0
17 [报告]
发表于 2008-02-12 23:10 |只看该作者
原帖由 lzcxh 于 2008-2-9 21:35 发表
windows下测试,无论以w+还是r方式fopen一个文件,都无法删除!


我记得windows下是有保护的,虽然一直觉得很不能理解,但确实是有保护的……
至于linux下可删除,是因为删除文件是在权限许可的情况下对它的父目录作读写操作,跟打没打开文件
没啥关系,只不过用惯windows的人可能会先入为主觉得应该不能删除
如果没记错的话~~

论坛徽章:
0
16 [报告]
发表于 2008-02-09 22:47 |只看该作者
原理是一样的。
lzcxh 该用户已被删除
15 [报告]
发表于 2008-02-09 21:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
14 [报告]
发表于 2008-02-09 14:11 |只看该作者
原帖由 ThinkMachine 于 2008-2-7 15:01 发表
emule下载完一个任务后,将会自动在后台上传这个文件,但是我却可以从磁盘上删除这个文件,从来没发现提示错误的情况。这就奇怪了,他上传时肯定已经打开了这个文件呀,即使是只读的方式打开,既然emule在使用这 ...

奇怪了,我怎么在emule上传的时候不能在外部删除emule的共享文件呢?但是在emule内部却可以。当然外部不能删除是正常的,毕竟在使用,内部删除也是正常的,程序里面关闭打开文件的句柄就可以顺利删除文件了。(我用的是windows版的emule)

[ 本帖最后由 dinghwy 于 2008-2-9 14:13 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2008-02-08 12:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
12 [报告]
发表于 2008-02-08 10:09 |只看该作者
大家说的都是linux下的情况,
linux 下 一个进程在没有加锁(有2种加锁方式:强制和协助)打开文件时,其他进程是可以删除的。
win 正常情况下一个进程打开文件后,其他进程是不允许删除文件的。(不知道有没有解决办法)。
linux 和win 的文件系统差别很大。

[ 本帖最后由 p4apple 于 2008-2-8 10:10 编辑 ]

论坛徽章:
0
11 [报告]
发表于 2008-02-07 23:18 |只看该作者

回复 #10 ThinkMachine 的帖子

原理好像不太一样?
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP