文件和文件夹管理 - 链接

Hard Links硬链接

//create a new link for an existing file
#include <unistd.h>
int link(const char *oldpath, const char *newpath);

成功返回0, 失败返回-1,并设置errno。

int ret;
/*
 * create a new directory entry,
 * '/home/kidd/privateer', that points at
 * the same inode as '/home/kidd/pirate'
 */
ret = link ("/home/kidd/privateer", /home/kidd/pirate");
if (ret)
        perror ("link");

Symbolic Links符号链接 symlinks 或soft links 软链接

#include <unistd.h>
int symlink(const char *oldpath, const char *newpath);

成功返回0, 失败返回-1。

int ret;
/*
 * create a symbolic link,
 * '/home/kidd/privateer', that
 * points at '/home/kidd/pirate'
 */
ret = symlink ("/home/kidd/privateer", "/home/kidd/pirate");
if (ret)
          perror ("symlink");

经过测试, link的行为类似于复制一个文件或目录,但不是创建一个新文件,指向同一个文件,而symlink类似于shell里的ln


测试结果

Unlinking 取消链接

#include <unistd.h>
int unlink(const char *pathname);

成功返回0, 如果这个文件名是该文件的最后一个reference,那么这个文件将会从文件系统中删除。如果一个进程已经打开了这个文件,那么内核会在进程关闭文件后删除这个文件。
如果路径名pathname是一个synbolic link,那么这个link而不是原被链接的目标,被删除。
失败返回-1,并设置errno。


测试结果
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文件操作 (Linux文件操作)) [文件|目录] Linux文件操作:为了对文件和目录进程处理,你需要用到系统...
    JamesPeng阅读 5,386评论 1 5
  • 一、Linux系统概述 不加引号可理解为宏,直接替换,单引号中特殊字符会被解释为普通字符,双引号中$,,'还是特殊...
    赤果_b4a7阅读 5,458评论 0 2
  • 所有执行I/O操作的系统调用都以文件描述符(一个非负整数)来指代打开的文件。包括pipe,FIFO,socket,...
    loopppp阅读 3,950评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,024评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,995评论 0 9

友情链接更多精彩内容