SYMLINK
Section: Linux Programmer's Manual (2)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
symlink - ファイルに新しい名前を付ける
書式
#include <unistd.h>
int symlink(const char *oldpath, const char *newpath);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
symlink():
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
説明
symlink()
は
oldpath
という文字列をファイルの内容として持つ
newpath
というシンボリック・リンク (symbolic link) を作成する。
シンボリック・リンクは実行時に解釈され、
リンクの内容でパスを置き換えて、そのパスを辿ることで、
ファイルやディレクトリに到達する。
シンボリック・リンクはパスの部分に
..
を含むかもしれない。これは (もしリンクの最初に使用された場合は) リンクの
存在するディレクトリの親ディレクトリが参照される。
シンボリック・リンクは (ソフト・リンク (soft link) とも呼ばれ)
存在するファイルを指しているかもしれないし、
存在しないファイルを指しているかもしれない;
後者の場合は壊れたリンク (dangling link) とも呼ばれる。
シンボリック・リンクの許可 (permission) は無意味である;
リンクを追跡する場合には所有権 (ownership) は無視される。
ただし、リンクの削除や名前の変更が要求され、かつリンクが存在する
ディレクトリにスティッキー・ビット (sticky bit)
(S_ISVTX)
が設定されている場合には、所有権のチェックが行われる。
newpath
が既に存在する場合には上書きはされない。
返り値
成功した場合には 0 を返す。エラーの場合には -1 を返し、
errno
が適切に設定される。
エラー
- EACCES
-
newpath
を含んでいるディレクトリへの書き込みが拒否されたか、
newpath
に含まれているディレクトリのどれかに検索許可が与えられていない
(path_resolution(7)
も参照すること)。
- EEXIST
-
newpath
が既に存在している。
- EFAULT
-
oldpath や newpath がアクセス可能なアドレス空間の外を指している。
- EIO
-
I/O エラーが発生した。
- ELOOP
-
newpath
を解決する際に遭遇したシンボリック・リンクが多過ぎる。
- ENAMETOOLONG
-
oldpath または newpath が長過ぎる。
- ENOENT
-
newpath
に含まれるディレクトリ部分が存在しないか、壊れたリンクであるか、
oldpath
が空文字列である。
- ENOMEM
-
十分なカーネル (kernel) のメモリーがない。
- ENOSPC
-
ファイルが含まれているデバイスに新しいディレクトリ・エントリ
(directory entry) を作成するだけの十分な容量がない。
- ENOTDIR
-
newpath
に含まれるディレクトリ部分が、実際には、ディレクトリではない。
- EPERM
-
newpath
を含んでいるファイル・システム (file system) が
シンボリック・リンクの作成をサポートしていない。
- EROFS
-
newpath
が読み込み専用のファイル・システムに存在している。
準拠
SVr4, 4.3BSD, POSIX.1-2001.
注意
oldpath
についてのチェックは行なわれない。
symlink によって参照される名前を削除すると (それが他にハード・リンク
(hard link) を持たなければ) 実際にファイルが削除される。
この動作が望んだものでない場合は、
link(2)
を使用すること。
関連項目
ln(1),
link(2),
lstat(2),
open(2),
readlink(2),
rename(2),
symlinkat(2),
unlink(2),
path_resolution(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:06 GMT, November 19, 2007