注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

读程序,学习Linux编程(十六)  

2010-08-21 23:59:48|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

3.9. unlink

unlink这个函数也有必要谈谈。

#include

int unlink(const char * pathname);

unlink会删除参数pathname指定的文件。如果该文件名为最后连接点,但有其他进程打开了此文件,则在所有关于此文件的文件描述词皆关闭后才会删除。如果参数pathname为一符号连接,则此连接会被删除。

说白了,就是不管文件有没有被打开,只要unlink了,你就可以不管了。无论你最后是否记得要关闭这个文件,他都会被删掉。

还有一个类似的函数:

#include

int remove(const char *pathname);

remove实际上是调用了unlink,比unlink多一点功能是可以删除目录。

在Windows操作系统中,文件只能存在于他自己的目录中,如果要访问,除了找到他所在的目录并打开他,还有一种访问快捷方式的办法。快捷方式也是一个文件,指向另一个文件。删除快捷方式不会对原文件有任何影响。

Linux也有类似的东西,称为链接。Linux有两种链接方式。

一种叫做符号链接,这种链接类似于Windows的快捷方式,函数symlink实现了这个功能。这个函数创建了一个新的文件,并指向原来的文件。

int symlink(const char *oldpath, const char *newpath);

在终端中可以用以下命令实现:

ln –s target linkname

另一种链接方式叫硬链接,这种链接并不创建新的文件,函数link实现了这个功能,在原有的文件上增加一个引用计数,并在目标目录中记录新的文件名(这点会在后面介绍Linux的目录时谈到)。

int link(const char *oldpath, const char *newpath);

在终端中可以用以下任一个命令实现:

ln target linkname

link target linkname

按照图示做下面的测试,注意红圈内数字,表示了文件的引用计数:

clip_image002


  评论这张
 
阅读(17)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017