LINK(2) FreeBSD システムコールマニュアル LINK(2)
名称
link − ハードファイルリンクを作成する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <unistd.h> int |
link(const char *name1, const char *name2); |
解説 |
link() システムコールは、 name1 が指す下層オブジェクトの属性を持つ、指定 のディレクトリエントリ (ハードリンク) name2 を不可分に作成します。リンク が正常に完了すると下層オブジェクトのリンクカウントが増加します。 name1 と name2 は、下層オブジェクトへのアクセスとアクセス権を等しく共有します。 name1 を削除してもファイル name2 は削除されず、下層オブジェクトのリンクカ ウントが減少します。 name1 引数によって指されるオブジェクトはハードリンクが成功するために存在 している必要があり、 name1 と name2 の両方が同じファイルシステム上に存在 している必要があります。 name1 引数はディレクトリであってはなりません。 |
戻り値
関数 link() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が 返され、グローバル変数 errno が設定されてエラーを示します。 |
エラー
link() システムコールは次の場合に処理に失敗し、リンクは作成されません: |
[ENOTDIR]
いずれかの前置パス名の構成要素がディレクトリではありま せん。 [ENAMETOOLONG] [ENOENT] [EOPNOTSUPP] [EMLINK] [EACCES] [EACCES] [ELOOP] [ENOENT] [EEXIST] [EPERM] [EXDEV] [ENOSPC] [EDQUOT] [EIO] [EROFS] [EFAULT] 関連項目 |
規格
link() システムコールは ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合していま す。 |
歴史
link() 関数は Version 7 AT&T UNIX で登場しました。 従来、スーパユーザは link() システムコールによってディレクトリをリンクで き、これはファイルシステムの一貫性を破壊するものでした。この実装では、こ のような操作はもはや許されません。 FreeBSD 10.0 March 5, 1999 FreeBSD 10.0 |