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
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 が読み込み専用のファイル・システムに存在している。
 

準拠

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