kazmax - Linux で自宅サーバー

symlink - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 注意
  7. 準拠
  8. 関連項目

名前

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

書式

#include <unistd.h>
int symlink(const char * oldpath , const char * newpath );

説明

symlink ()は oldpath という文字列をファイルの内容として持つ newpath というシンボリック・リンク (symbolic link) を作成する。
シンボリック・リンクは実行時に解釈され、 リンクの内容でパスを置き換えて、そのパスを辿ることで、 ファイルやディレクトリに到達する。
シンボリック・リンクはパスの部分に .. を含むかもしれない。これは (もしリンクの最初に使用された場合は) リンクの 存在するディレクトリの親ディレクトリが参照される。
シンボリック・リンクは (ソフト・リンク (soft link) とも呼ばれ) 存在するファイルを指しているかもしれないし、 存在しないファイルを指しているかもしれない; 後者の場合は壊れたリンク (dangling link) とも呼ばれる。
シンボリック・リンクの許可 (permission) は無意味である; リンクを追跡する場合には所有権 (ownership) は無視される。 ただし、リンクの削除や名前の変更が要求され、かつリンクが存在する ディレクトリにスティッキー・ビット (sticky bit) ( S_ISVTX )が設定されている場合には、所有権のチェックが行われる。
newpath が既に存在する場合には上書きはされない

返り値

成功した場合には 0 を返す。エラーの場合には -1 を返し、 errno が適切に設定される。

エラー

EACCES
newpath を含んでいるディレクトリへの書き込みが拒否されたか、 newpath に含まれているディレクトリのどれかに検索許可が与えられていない ( path_resolution (2)も参照すること)。
EEXIST
newpath が既に存在している。
EFAULT
oldpathnewpath がアクセス可能なアドレス空間の外を指している。
EIO
I/O エラーが発生した。
ELOOP
newpath を解決する際に遭遇したシンボリック・リンクが多過ぎる。
ENAMETOOLONG
oldpath または newpath が長過ぎる。
ENOENT
newpath に含まれるディレクトリ部分が存在しないか、壊れたリンクであるか、 oldpath が空文字列である。
ENOMEM
十分なカーネル (kernel) のメモリーがない。
ENOSPC
ファイルが含まれているデバイスに新しいディレクトリ・エントリ (directory entry) を作成するだけの十分な容量がない。
ENOTDIR
newpath に含まれるディレクトリ部分が、実際には、ディレクトリではない。
EPERM
newpath を含んでいるファイル・システム (file system) が シンボリック・リンクの作成をサポートしていない。
EROFS
newpath が読み込み専用のファイル・システムに存在している。

注意

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

準拠

SVr4, 4.3BSD, POSIX.1-2001.   open (2) を見て、同じ名前の重複と NFS について参照すること。

関連項目