link - システムコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- エラー
- 注意
- 準拠
- バグ
- 関連項目
名前
書式
#include <unistd.h>
int link(const char *
oldpath
, const char *
newpath
);
説明
link
()は存在するファイルへの新しいリンク (link)
(ハード・リンク (hard link) ともいう) を作成する。
newpath
が存在する場合には上書きはされない
。
この新しい名前は全ての操作において古い名前と完全に同じように使用される;
両方の名前は同じファイルを参照しており
(それで同じ許可 (permission) や所有者 (ownership) となるので)、
どちらの名前が「本来」のものであるか判別できない。
返り値
成功した場合は 0 が返される。エラーの場合は -1 が返され、
errno
が適切に設定される。
エラー
-
EACCES
-
newpath
を含んでいるディレクトリへの書き込みが許されていないか、
oldpath
または
newpath
へのディレクトリのどれかに検索許可がない
(
path_resolution
(2)を参照)。
-
EEXIST
-
newpath
が既に存在する。
-
EFAULT
-
oldpath
または
newpath
がアクセス可能なアドレス空間の外を指している。
.TP
.B EIO
I/O エラーが発生した。
.TP
.B ELOOP
.IR oldpath
または
newpath
を解決する際に遭遇したシンボリック・リンクが多過ぎる。
.TP
.B EMLINK
.I oldpath
によって参照されるファイルは
既に最大数までのリンクを持っている。
.TP
.B ENAMETOOLONG
.IR oldpath
または
newpath が長過ぎる。
-
ENOENT
-
oldpath
または
newpath
のディレクトリ部分が存在しないか、
壊れた(dangling)シンボリック・リンクである。
-
ENOMEM
-
カーネルに十分なメモリがない。
-
ENOSPC
-
そのファイルを含んでいるデバイスに新しいディレクトリ・エントリを
作成するための空きがない。
-
ENOTDIR
-
oldpath
または
newpath
のディレクトリ部分が、実際には、ディレクトリでない。
-
EPERM
-
oldpath
がディレクトリである。
-
EPERM
-
oldpath
と
newpath
を含んでいるファイル・システムがハード・リンクをサポートしていない。
-
EROFS
-
ファイルが読み込み専用のファイル・システムに存在する。
-
EXDEV
-
oldpath
と
newpath
が同じマウントされたファイル・システムに存在しない。
(Linux は 1 つのファイル・システムを複数のマウント位置に
マウントすることを許可している。
しかし
link
(2) は、たとえ同じファイル・システムであっても、
別々のマウント位置を跨いでは動作しない。)
注意
link
()でファイル・システムを超えてハード・リンクを作成することはできない。
このような場合は
symlink
()を使用すること。
POSIX.1-2001 では、
oldpath
がシンボリック・リンクである場合、
link
()は
oldpath
の参照を削除すべきであると記述している。
しかし、Linux はそのようにしていない。
oldpath
がシンボリック・リンクである場合、
newpath
は同じシンボリック・リンクファイルへの (ハード) リンクとして作成される
(つまり
newpath
は
oldpath
が参照していた同じファイルへのシンボリックリンクになる)。
他のいくつかの実装でも Linux と同じように動作する。
準拠
SVr4, 4.3BSD, POSIX.1-2001 (上記の注意点以外).
バグ
NFS ファイル・システムでは、NFS サーバーがリンクを作成した後に、
それを伝える前に死んだ場合には返り値が不正な場合がある。
リンクが作成できたかどうか見つけるためには
stat
(2) を使用すること。
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする