link,linkat,unlink,unlinkat,remove函数

来源:互联网 发布:软件外包专业 编辑:程序博客网 时间:2024/05/22 17:37

1.link,linkat函数

1.1函数原型

#include <unistd.h>
int link(const char* existingpath, const char* newpath);
int linkat(int efd, const char* existingpath, int nfd, const char* newpath,int flag);
成功返回0,失败返回-1.

1.2函数简单说明

link函数创建新的文件链接newpath(硬链接)到existingpath。如果newpath已经存在则返回错误。
link函数只有最后的部分会被创建,其余肯定已经存在。
linkat函数已存在文件被efd和existingpath定义。而新建的链接由nfd和newpath定义。
默认情况下路径都是相对于fd文件的相对路径。但是如果相对应的fd设置了AT_FDCWD标志,那么相对路径是相对当前路径。如果路径是绝对路径,则fd被忽略。
如果指向的文件是软连接,那么flag控制新创建的链接指向软链接还是软链接指向的文件。如果AT_SYMLINK_FOLLOW标志被设置了,那么指向的是链接指向的文件。不然指向的是链接本身。
新的文件创建和node数增加是一个原子操作。
而且大多数应用系统要求两个文件不能是跨文件系统的。

2.unlink,unlinkat函数

2.1函数原型

#include <unistd.h>
int unlink(const char* pathname);
int unlinkat (int fd,const char* pathname, int flag);
成功返回0,失败返回-1.

2.2函数简单说明

两个函数删除文件入口,并且减少pathname的文件链接数。如果文件还有其他硬链接,数据也可以通过该硬链接读取。
删除一个文件链接,我们必须要文件所在目录的写权限和操作权限。如果目录的sticky bit设置了。那么我们要有写权限和下面三种选项的一种
1.文件所有者2.目录所有者3.超级用户
只有当文件链接减为0时文件才可以被删除。如果文件被程序打开了要等程序结束关闭文件后删除。
其它用法和上面的一样。

3.remove函数

3.1函数原型

#include<stdio.h>
int remove(const char* pathname);
成功返回0,失败返回-1.

3.1函数简单说明

对于文件来说,remove和unlink一样,对于目录,remove和rmdir一样。
0 0
原创粉丝点击