Man page - symlink(2)

Packages contains this manual

Available languages:

en fr it pl nl ja ru de

Manual

SYMLINK

名 前
書 式
説 明
symlinkat()
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
glibc で の 注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

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

書 式

#include <unistd.h>

int symlink(const char * target , const char * linkpath );

#include <fcntl.h> /* AT_* 定 数 の 定 義 */
#include <unistd.h>

int symlinkat(const char * target , int newdirfd , const char * linkpath );

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

symlink ():

_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
|| /* glibc 2.19 以 前 : */ _BSD_SOURCE

symlinkat ():

glibc 2.10 以 降 :

_POSIX_C_SOURCE >= 200809L

glibc 2.10 よ り 前 :

_ATFILE_SOURCE

説 明

symlink () は target と い う 文 字 列 を フ ァ イ ル の 内 容 と し て 持 つ linkpath と い う シ ン ボ リ ッ ク リ ン ク (symbolic link) を 作 成 す る 。

シ ン ボ リ ッ ク リ ン ク は 実 行 時 に 解 釈 さ れ 、 リ ン ク の 内 容 で パ ス を 置 き 換 え て 、 そ の パ ス を 辿 る こ と で 、 フ ァ イ ル や デ ィ レ ク ト リ に 到 達 す る 。

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

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

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

linkpath が 存 在 す る 場 合 に は 上 書 き は さ れ な い

symlinkat()

symlinkat () シ ス テ ム コ ー ル は symlink () と 全 く 同 様 に 動 作 す る が 、 以 下 で 説 明 す る 点 が 異 な る 。

linkpath で 指 定 さ れ た パ ス 名 が 相 対 パ ス の 場 合 、 こ の パ ス 名 は フ ァ イ ル デ ィ ス ク リ プ タ ー newdirfd が 参 照 す る デ ィ レ ク ト リ に 対 す る 相 対 パ ス と 解 釈 さ れ る ( symlink () に 相 対 パ ス 名 を 渡 し た 場 合 の よ う に 、 呼 び 出 し た プ ロ セ ス の カ レ ン ト ワ ー キ ン グ デ ィ レ ク ト リ に 対 す る 相 対 パ ス で は な い )。

linkpath で 指 定 さ れ た パ ス 名 が 相 対 パ ス で 、 newdirfd が 特 別 な 値 AT_FDCWD の 場 合 、 ( symlink () と 同 様 に ) linkpath は 呼 び 出 し た プ ロ セ ス の カ レ ン ト ワ ー キ ン グ デ ィ レ ク ト リ に 対 す る 相 対 パ ス と 解 釈 さ れ る 。

linkpath で 指 定 さ れ た パ ス 名 が 絶 対 パ ス の 場 合 、 newdirfd は 無 視 さ れ る 。

返 り 値

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

エ ラ ー

EACCES

linkpath を 含 ん で い る デ ィ レ ク ト リ へ の 書 き 込 み が 拒 否 さ れ た か 、 linkpath に 含 ま れ て い る デ ィ レ ク ト リ の ど れ か に 検 索 許 可 が 与 え ら れ て い な い ( path_resolution (7) も 参 照 す る こ と )。

EDQUOT

そ の フ ァ イ ル シ ス テ ム の リ ソ ー ス 使 用 量 が ユ ー ザ ー ク ォ ー タ に 達 し て い る 。 対 象 と な る リ ソ ー ス は inode か デ ィ ス ク ブ ロ ッ ク で 、 ど ち ら に な る か は フ ァ イ ル シ ス テ ム の 実 装 依 存 で あ る 。

EEXIST

linkpath が 既 に 存 在 す る 。

EFAULT

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

EIO

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

ELOOP

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

ENAMETOOLONG

target ま た は linkpath が 長 過 ぎ る 。

ENOENT

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

ENOMEM

十 分 な カ ー ネ ル メ モ リ ー が な い 。

ENOSPC

そ の フ ァ イ ル を 含 ん で い る デ バ イ ス に 新 し い デ ィ レ ク ト リ エ ン ト リ ー を 作 成 す る た め の 空 き が な い 。

ENOTDIR

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

EPERM

linkpath を 含 ん で い る フ ァ イ ル シ ス テ ム (file system) が シ ン ボ リ ッ ク リ ン ク の 作 成 を サ ポ ー ト し て い な い 。

EROFS

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

symlinkat () で は 以 下 の エ ラ ー も 発 生 す る 。

EBADF

newdirfd が 有 効 な フ ァ イ ル デ ィ ス ク リ プ タ ー で な い 。

ENOENT

linkpath が 相 対 パ ス 名 で 、 newdirfd が 削 除 さ れ た デ ィ レ ク ト リ を 参 照 し て い る 。

ENOTDIR

linkpath が 相 対 パ ス で 、 newdirfd が デ ィ レ ク ト リ 以 外 の フ ァ イ ル を 参 照 し て い る フ ァ イ ル デ ィ ス ク リ プ タ ー で あ る 。

バ ー ジ ョ ン

symlinkat () は カ ー ネ ル 2.6.16 で Linux に 追 加 さ れ た 。 ラ イ ブ ラ リ に よ る サ ポ ー ト は バ ー ジ ョ ン 2.4 で glibc に 追 加 さ れ た 。

準 拠

symlink (): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.

symlinkat (): POSIX.1-2008.

注 意

target に つ い て の チ ェ ッ ク は 行 な わ れ な い 。

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

glibc で の 注 意

symlinkat () が 利 用 で き な い 古 い カ ー ネ ル で は 、 glibc ラ ッ パ ー 関 数 は symlink () を 使 用 す る モ ー ド に フ ォ ー ル バ ッ ク す る 。 pathname が 相 対 パ ス の 場 合 、 glibc は newdirfd 引 数 に 対 応 す る /proc/self/fd の シ ン ボ リ ッ ク リ ン ク に 基 づ い て パ ス 名 を 構 成 す る 。

関 連 項 目

ln (1), namei (1), lchown (2), link (2), lstat (2), open (2), readlink (2), rename (2), unlink (2), path_resolution (7), symlink (7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。