免费注册 查看新帖 |

Chinaunix

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

一个文件没有关闭能把它删除? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-04 15:40 |只看该作者 |倒序浏览
以下程序能运行。

  1.         int fd;
  2.         if(creat("tempfile",FILE_MODE)<0)
  3.               err_sys("creat error");
  4.         if((fd=open("tempfile", O_RDWR))<0)
  5.               err_sys("open error");
  6.         if( unlink("tempfile")<0)
  7.               err_sys("unlink error");
  8.         printf("file unlinked\n");
  9.         sleep(15);
  10.         printf("done\n");

  11.         exit(0);
复制代码


请大家解释??

论坛徽章:
0
2 [报告]
发表于 2004-02-04 16:10 |只看该作者

一个文件没有关闭能把它删除?

运行结果输出是什么?
unlink error?
file unlinked?

论坛徽章:
0
3 [报告]
发表于 2004-02-04 16:39 |只看该作者

一个文件没有关闭能把它删除?

这是输出:
  1. # ./a.out
  2. file unlinked
  3. done
  4. #
复制代码


论坛徽章:
0
4 [报告]
发表于 2004-02-04 16:41 |只看该作者

一个文件没有关闭能把它删除?

很正常啊!使用临时文件时就采用这种方法,是系统推荐的方法。

论坛徽章:
0
5 [报告]
发表于 2004-02-04 17:41 |只看该作者

一个文件没有关闭能把它删除?

实践出真知。譬如说,你在vi一个文件,但另一个文件却是可以删掉你的文件。

论坛徽章:
0
6 [报告]
发表于 2004-02-04 17:53 |只看该作者

一个文件没有关闭能把它删除?

用 remove()代替unlink()是同样的结果。

论坛徽章:
0
7 [报告]
发表于 2004-02-05 10:11 |只看该作者

一个文件没有关闭能把它删除?

用文件描述符(fd)对文件操作,在做完后可以不关fd的,系统自己关闭.

不知道是不是这个原因,但是上面你的代码出来的结果,自己觉得也不可思意的,这里就可以rm tmpfile了???

论坛徽章:
0
8 [报告]
发表于 2004-02-05 10:22 |只看该作者

一个文件没有关闭能把它删除?

UNIX文件系统设计上是这样的,这和Windows不一样。如果打开一个文件,然后unlink它,在物理上它还是可以访问的,只有所有的进程都关闭了这个文件,它的存储空间才会释放。

论坛徽章:
0
9 [报告]
发表于 2004-02-05 14:13 |只看该作者

一个文件没有关闭能把它删除?

其实,这就是很多经典文献中提到的临时文件的标准使用方法,包括标准库函数中的临时文件用法也是这样。

论坛徽章:
0
10 [报告]
发表于 2004-02-05 15:45 |只看该作者

一个文件没有关闭能把它删除?

[quote]原帖由 "qjlemon"]UNIX文件系统设计上是这样的,这和Windows不一样。如果打开一个文件,然后unlink它,在物理上它还是可以访问的,只有所有的进程都关闭了这个文件,它的存储空间才会释放。[/quote 发表:


其他的都没有意见,不过说unlink后,程序应该已经切断和这个文件所有物理联系  后面的都基本同意
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP