LINK
Section: Linux Programmer's Manual (2)
Updated: 2004-06-23
Index
JM Home Page
roff page
名前
link - ファイルの新しい名前を作成する
書式
#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(7)
を参照)。
- EEXIST
-
newpath
が既に存在する。
- EFAULT
-
oldpath または newpath
がアクセス可能なアドレス空間の外を指している。
- EIO
-
I/O エラーが発生した。
- ELOOP
-
oldpath または newpath
を解決する際に遭遇したシンボリック・リンクが多過ぎる。
- EMLINK
-
oldpath
によって参照されるファイルは
既に最大数までのリンクを持っている。
- ENAMETOOLONG
-
oldpath または newpath
が長過ぎる。
- ENOENT
-
oldpath または newpath
のディレクトリ部分が存在しないか、
壊れた(dangling)シンボリック・リンクである。
- ENOMEM
-
カーネルに十分なメモリがない。
- ENOSPC
-
そのファイルを含んでいるデバイスに新しいディレクトリ・エントリを
作成するための空きがない。
- ENOTDIR
-
oldpath または newpath
のディレクトリ部分が、実際には、ディレクトリでない。
- EPERM
-
oldpath
がディレクトリである。
- EPERM
-
oldpath と newpath
を含んでいるファイル・システムがハード・リンクをサポートしていない。
- EROFS
-
ファイルが読み込み専用のファイル・システムに存在する。
- EXDEV
-
oldpath と newpath
が同じマウントされたファイル・システムに存在しない。
(Linux は 1 つのファイル・システムを複数のマウント位置に
マウントすることを許可している。
しかし
link(2)
は、たとえ同じファイル・システムであっても、
別々のマウント位置を跨いでは動作しない。)
準拠
SVr4, 4.3BSD, POSIX.1-2001 (下記の注意点以外).
注意
link()
でファイル・システムを超えてハード・リンクを作成することはできない。
このような場合は
symlink(2)
を使用すること。
POSIX.1-2001 では、
oldpath
がシンボリック・リンクである場合、
link()
は
oldpath
の参照を解決すべきであると記述されている。
しかし、Linux はそのようにしていない。
oldpath
がシンボリック・リンクである場合、
newpath
は同じシンボリック・リンクファイルへの (ハード) リンクとして作成される
(つまり
newpath
は
oldpath
が参照していた同じファイルへのシンボリックリンクになる)。
他のいくつかの実装でも Linux と同じように動作する。
バグ
NFS ファイル・システムでは、NFS サーバーがリンクを作成した後に、
それを伝える前に死んだ場合には返り値が不正な場合がある。
リンクが作成できたかどうか見つけるためには
stat(2)
を使用すること。
関連項目
ln(1),
linkat(2),
open(2),
rename(2),
stat(2),
symlink(2),
unlink(2),
path_resolution(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- バグ
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:50 GMT, November 19, 2007