Hard Links硬鏈接
//create a new link for an existing file
#include <unistd.h>
int link(const char *oldpath, const char *newpath);
成功返回0, 失敗返回-1,并設(shè)置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符號(hào)鏈接 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");
經(jīng)過測(cè)試, link的行為類似于復(fù)制一個(gè)文件或目錄,但不是創(chuàng)建一個(gè)新文件,指向同一個(gè)文件,而symlink類似于shell里的ln

測(cè)試結(jié)果
Unlinking 取消鏈接
#include <unistd.h>
int unlink(const char *pathname);
成功返回0, 如果這個(gè)文件名是該文件的最后一個(gè)reference,那么這個(gè)文件將會(huì)從文件系統(tǒng)中刪除。如果一個(gè)進(jìn)程已經(jīng)打開了這個(gè)文件,那么內(nèi)核會(huì)在進(jìn)程關(guān)閉文件后刪除這個(gè)文件。
如果路徑名pathname是一個(gè)synbolic link,那么這個(gè)link而不是原被鏈接的目標(biāo),被刪除。
失敗返回-1,并設(shè)置errno。

測(cè)試結(jié)果