OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / man2 / link.2
1 .\" Hey Emacs! This file is -*- nroff -*- source.
2 .\"
3 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
4 .\"                               1993 Michael Haardt, Ian Jackson.
5 .\"
6 .\" Permission is granted to make and distribute verbatim copies of this
7 .\" manual provided the copyright notice and this permission notice are
8 .\" preserved on all copies.
9 .\"
10 .\" Permission is granted to copy and distribute modified versions of this
11 .\" manual under the conditions for verbatim copying, provided that the
12 .\" entire resulting derived work is distributed under the terms of a
13 .\" permission notice identical to this one.
14 .\"
15 .\" Since the Linux kernel and libraries are constantly changing, this
16 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
17 .\" responsibility for errors or omissions, or for damages resulting from
18 .\" the use of the information contained herein.  The author(s) may not
19 .\" have taken the same level of care in the production of this manual,
20 .\" which is licensed free of charge, as they might when working
21 .\" professionally.
22 .\"
23 .\" Formatted or processed versions of this manual, if unaccompanied by
24 .\" the source, must acknowledge the copyright and authors of this work.
25 .\"
26 .\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
27 .\" Modified 1994-08-21 by Michael Haardt
28 .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
29 .\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
30 .\"
31 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
32 .\"         all rights reserved.
33 .\" Translated Thu Dec 11 23:47:55 JST 1997
34 .\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
35 .\" Updated & Modified Tue Feb  8 06:36:08 JST 2005
36 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
37 .\" Updated & Modified Fri Apr 22 02:05:00 JST 2005 by Yuichi SATO
38 .\" Updated 2008-09-07, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.08
39 .\"
40 .\"WORD:        link                    リンク
41 .\"WORD:        hard link               ハード・リンク
42 .\"WORD:        overwrite               上書き
43 .\"WORD:        permission              許可(permission)
44 .\"WORD:        ownership               所有者(ownership)
45 .\"WORD:        file system             ファイル・システム
46 .\"WORD:        effective uid           実効ユーザーID
47 .\"WORD:        kernel                  カーネル
48 .\"WORD:        symbolic link           シンボリック・リンク
49 .\"WORD:        dangling symbolic link  壊れたシンボリック・リンク
50 .\"WORD:        directory entry         ディレクトリ・エントリ
51 .\"
52 .TH LINK 2 2008-08-21 "Linux" "Linux Programmer's Manual"
53 .SH 名前
54 link \- ファイルの新しい名前を作成する
55 .SH 書式
56 .B #include <unistd.h>
57 .sp
58 .BI "int link(const char *" oldpath ", const char *" newpath );
59 .SH 説明
60 .BR link ()
61 は存在するファイルへの新しいリンク (link)
62 (ハード・リンク (hard link) ともいう) を作成する。
63
64 .I newpath
65 が存在する場合には上書きは\fIされない\fR。
66
67 この新しい名前は全ての操作において古い名前と完全に同じように使用される;
68 両方の名前は同じファイルを参照しており
69 (それで同じ許可 (permission) や所有者 (ownership) となるので)、
70 どちらの名前が本来のものであるか判別できない。
71 .SH 返り値
72 成功した場合は 0 が返される。エラーの場合は \-1 が返され、
73 .I errno
74 が適切に設定される。
75 .SH エラー
76 .TP
77 .B EACCES
78 .I newpath
79 を含んでいるディレクトリへの書き込みが許されていないか、
80 .I oldpath
81 または
82 .I newpath
83 へのディレクトリのどれかに検索許可がない
84 .RB ( path_resolution (7)
85 を参照)。
86 .TP
87 .B EEXIST
88 .I newpath
89 が既に存在する。
90 .TP
91 .B EFAULT
92 .IR oldpath " または " newpath "
93 がアクセス可能なアドレス空間の外を指している。
94 .TP
95 .B EIO
96 I/O エラーが発生した。
97 .TP
98 .B ELOOP
99 .IR oldpath " または " newpath
100 を解決する際に遭遇したシンボリック・リンクが多過ぎる。
101 .TP
102 .B EMLINK
103 .I oldpath
104 によって参照されるファイルは
105 既に最大数までのリンクを持っている。
106 .TP
107 .B ENAMETOOLONG
108 .IR oldpath " または " newpath "
109 が長過ぎる。
110 .TP
111 .B ENOENT
112 .IR oldpath " または " newpath
113 のディレクトリ部分が存在しないか、
114 壊れた(dangling)シンボリック・リンクである。
115 .TP
116 .B ENOMEM
117 カーネルに十分なメモリがない。
118 .TP
119 .B ENOSPC
120 そのファイルを含んでいるデバイスに新しいディレクトリ・エントリを
121 作成するための空きがない。
122 .TP
123 .B ENOTDIR
124 .IR oldpath " または " newpath
125 のディレクトリ部分が、実際には、ディレクトリでない。
126 .TP
127 .B EPERM
128 .I oldpath
129 がディレクトリである。
130 .TP
131 .B EPERM
132 .IR oldpath " と " newpath
133 を含んでいるファイル・システムがハード・リンクをサポートしていない。
134 .TP
135 .B EROFS
136 ファイルが読み込み専用のファイル・システムに存在する。
137 .TP
138 .B EXDEV
139 .IR oldpath " と " newpath
140 が同じマウントされたファイル・システムに存在しない。
141 (Linux は 1 つのファイル・システムを複数のマウント位置に
142 マウントすることを許可している。
143 しかし
144 .BR link ()
145 は、たとえ同じファイル・システムであっても、
146 別々のマウント位置を跨いでは動作しない。)
147 .SH 準拠
148 SVr4, 4.3BSD, POSIX.1-2001 (但し「注意」を参照)。
149 .\" SVr4 は他に ENOLINK, EMULTIHOP エラー状態についても記述している。
150 .\" POSIX.1 には ELOOP についての記述はない。
151 .\" X/OPEN には EFAULT, ENOMEM, EIO についての記述はない。
152 .SH 注意
153 .BR link ()
154 でファイル・システムを超えてハード・リンクを作成することはできない。
155 このような場合は
156 .BR symlink (2)
157 を使用すること。
158
159 POSIX.1-2001 では、
160 .I oldpath
161 がシンボリック・リンクである場合、
162 .BR link ()
163
164 .I oldpath
165 の参照を解決すべきであると記述されている。
166 しかし、カーネル 2.0 以降の
167 .\" 正確にはカーネル 1.3.56 以降
168 Linux ではそのようになっていない。
169 .I oldpath
170 がシンボリック・リンクである場合、
171 .I newpath
172 は同じシンボリック・リンクファイルへの (ハード) リンクとして作成される
173 (つまり
174 .I newpath
175
176 .I oldpath
177 が参照していた同じファイルへのシンボリックリンクになる)。
178 他のいくつかの実装でも Linux と同じように動作する。
179 .\" 例えば、デフォルトの Solaris のコンパイル環境では
180 .\" Linux と同じように動作する。そして Austin メーリングリストの
181 .\" 2005 年 3 月のスレッドに投稿した人たちは、
182 .\" その他のいくつかの (System V) 実装でも同じであった/ある、
183 .\" と報告している -- MTK, Apr 05
184 POSIX.1-2008 では
185 .BR link ()
186 の仕様が変更され、
187 .I oldpath
188 がシンボリック・リンクの場合にシンボリック・リンクの参照を
189 解決するかどうかは実装依存となった。
190 リンク作成時のシンボリック・リンクの扱いについての詳細な制御に
191 関しては
192 .BR linkat (2)
193 を参照のこと。
194 .SH バグ
195 NFS ファイル・システムでは、NFS サーバーがリンクを作成した後に、
196 それを伝える前に死んだ場合には返り値が不正な場合がある。
197 リンクが作成できたかどうか見つけるためには
198 .BR stat (2)
199 を使用すること。
200 .SH 関連項目
201 .BR ln (1),
202 .BR linkat (2),
203 .BR open (2),
204 .BR rename (2),
205 .BR stat (2),
206 .BR symlink (2),
207 .BR unlink (2),
208 .BR path_resolution (7),
209 .BR symlink (7)