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符號鏈接 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)過測試, link的行為類似于復(fù)制一個文件或目錄,但不是創(chuàng)建一個新文件,指向同一個文件,而symlink類似于shell里的ln

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

測試結(jié)果