UNIX环境高级编程复习——文件和目录(4)

来源:互联网 发布:java引用值 编辑:程序博客网 时间:2024/06/06 06:22

link、unlink、remove和rename函数

#include<unistd.h>int link(const char *existingpath,const char *newpath);返回值:若成功则返回0,否则返回-1.

此函数创建一个新的目录项,它引用现有的文件existingpath。
        为了删除一个现由于的目录项,可以调用unlink函数。
#include<unistd.h>int unlink(const char *pathname);返回值:若成功则返回0,否则返回-1。

此函数删除目录来项,并将pathname所引用文件的链接数减1。如果还有指向该文件的其他链接,则仍可通过其他链接访问该文件。

    我们也可以用remove函数解除对一个文件或目录的链接。对于文件,remove的功能和unlink相同。对于目录,remove的功能与rmdir相同。
#include<stdio.h>int remove(const char *pathname);返回值:若成功则返回0,否则返回-1.

    文件或目录用rename函数更名。
#include<stdio.h>int rename(const char *oldname,const char *newname);返回值:若成功则返回0,否则返回-1.

符号链接

硬链接通常有一些限制:
(1)硬链接要求链接和文件位于同一文件系统中。
(2)只有超级用户才能创建指向目录的硬链接。
symlink函数创建一个符号链接。
#include<unistd.h>int symlink(const char *actualpath,const char *sympath);返回值:若成功返回0,否则返回-1.

   因为open函数跟随符号链接,所以需要有一种方法打开该链接本身,并读该链接中的名字。
#include<unistd.h>ssize_t readlink(const char *restrict pathname,char *restrict buf);返回值:成功则返回读到的字节数,否则返回-1.

此函数组合了open、read和close的所有操作。
0 0