symlink

SYMLINK(2)                  Linux Programmer's Manual                 SYMLINK(2)



名前
       symlink - ファイルに新しい名前を付ける。

書式
       #include <unistd.h>

       int symlink(const char *oldpath, const char *newpath);

説明
       symlink newpath という名前の oldpath へのシンボリック・リンク(symbolic link)を作成する。

       シンボリック・リンクは実行時に解釈され、ファイルやディレクトリを見 つけるために、リンクの内容をたどり置き換えられる。

       シンボリック・リンクはパスの部分に ..  を含むかもしれない、これは(もしリンクの最初に使用された場合は)リンクの
       存在するディレクトリの親ディレクトリが参照される。

       シンボリック・リンクは(ソフト・リンク(soft link)としても知られており)
       存在するファイルを指しているかもしれないし、存在しないファイルを指し ているかもしれない; 後者の場合は壊れたリンク(dangling
       link)として知ら れている。

       シンボリック・リンクの許可(permission)は無意味である; リンクを追跡す
       る場合には所有権(ownership)は無視される。しかしリンクの削除や名前の 変更が要求され、ディレクトリにスティッキー・ビット(sticky
       bit)が設定 されていた場合にはチェックされる。

       もし newpath が既に存在する場合には上書きはされない返り値
       成功した場合にはゼロを返す。エラーの場合には -1 を返し、 errno が適切に設定される。

エラー
       EPERM   newpath を含んでいるファイル・システム(file system)がシンボリック・リンクを サポートしていない。

       EFAULT  oldpath newpath がアクセス可能なアドレス空間の外を指している。

       EACCES  プロセスの実効(effective)ユーザーIDが newpath
               を含んでいるディレクトリについて書き込み許可を与えられていないか、 newpath
               に含まれているディレクトリのどれかに検索(実行)許可が与えられていない。

       ENAMETOOLONG
               oldpath または newpath が長過ぎる。

       ENOENT  newpath に含まれるディレクトリ部分が存在しないか、壊れたリンクであるか、 oldpath が空文字列である。

       ENOTDIR newpath に含まれるディレクトリ部分が、実際には、ディレクトリではない。

       ENOMEM  十分なカーネル(kernel)のメモリーがない。

       EROFS   newpath が読み込み専用のファイル・システムに存在している。

       EEXIST  newpath が既に存在している。

       ELOOP   newpath を解決する際に遭遇したシンボリック・リンクが多過ぎる。

       ENOSPC  ファイルが含まれているデバイスに新しいディレクトリ・エントリ (directory entry)を作成するだけの十分な容量がない。

       EIO     I/O エラーが発生した。

注意
       oldpath についてのチェックは行なわれない。

       symlink によって参照される名前を削除すると(それが他にハード・リンク (hard
       link)を持たなければ)実際にファイルが削除される。もしこの動作が 望んだものでなれば link を使用すること。


準拠
       SVr4, SVID, BSD 4.3, X/OPEN.  SVr4 には他に EDQUOT, ENOSYS エラーについての記述がある。

バグ
       open(2) を見て、同じ名前の重複と NFS について参照すること。

関連項目
       link(2), unlink(2), rename(2), open(2), lstat(2), readlink(2), ln(1).



Linux 2.0.30                     21 August 1997                       SYMLINK(2)