link(2) FreeBSD 一般コマンドマニュアル

link

前のページ 上に戻る 次のページ

link




書式

     #include <unistd.h>

     int
     link(const char *name1, const char *name2);


解説

     link() 関数呼び出しは、 name1 が指す下層オブジェクトの属性を持つ、指定の
     ディレクトリエントリ (ハードリンク) name2 を不可分に作成します。リンクが
     正常に完了すると下層オブジェクトのリンクカウントが増加します。 name1name2 は、下層オブジェクトへのアクセスとアクセス権を等しく共有します。

     name1 を削除してもファイル name2 は削除されず、下層オブジェクトのリンクカ
     ウントが減少します。

     name1 はハードリンクが成功するために存在している必要があり、 name1name2 の両方が同じファイルシステム上に存在している必要があります。 name1
     はディレクトリであってはなりません。


戻り値

     関数 link() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が
     返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     link() は次の場合に処理に失敗し、リンクは作成されません。

     [ENOTDIR]          いずれかの前置パス名の構成要素がディレクトリではありま
                        せん。

     [ENAMETOOLONG]     いずれかのパス名の構成要素が 255 文字を越えているか、
                        またはいずれかのパス名全体の長さが 1023 文字を越えてい
                        ます。

     [ENOENT]           いずれかの前置パス名の構成要素が存在しません。

     [EOPNOTSUPP]       name1 によって指定されたファイルが入っているファイルシ
                        ステムがリンクをサポートしていません。

     [EMLINK]           name1 で指定されたファイルのリンクカウントが 32767 を
                        越えます。

     [EACCES]           いずれかの前置パス名の構成要素について検索許可が拒否さ
                        れています。

     [EACCES]           要求されたリンクは、書込み許可を拒否するモードのディレ
                        クトリに書込みすることを要求しています。

     [ELOOP]            パス名を変換するときに検出されたシンボリックリンクが多
                        すぎます。

     [ENOENT]           name1 によって指定されたファイルが存在しません。
                        リンクを入れるエントリを置くディレクトリを拡張できませ
                        ん。

     [EIO]              ディレクトリエントリを作成するためファイルシステムに読
                        み書きしている間に入出力エラーが発生しました。

     [EROFS]            要求されたリンクは、読取り専用ファイルシステム上のディ
                        レクトリに書込みすることを要求しています。

     [EFAULT]           指定されたパス名の 1 つが、プロセスに割り当てられたア
                        ドレス空間の範囲外を指しています。


関連項目

     readlink(2), symlink(2), unlink(2)


規格

     link() 関数は ISO/IEC 9945-1:1990 (``POSIX.1'') に準拠しています。


歴史

     link() 関数は Version 7 AT&T UNIX で登場しました。

     従来、スーパユーザは link() システムコールによってディレクトリをリンクで
     き、これはファイルシステムの一貫性を破壊するものでした。この実装では、こ
     のような操作は もはや許されません。

FreeBSD 4.4                      March 5, 1999                     FreeBSD 4.4

ABELNET VPSサービス