Man page - unlink(2)

Packages contains this manual

Available languages:

en fr it pl nl ja ru ro de

Manual

UNLINK

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

名 前

unlink, unlinkat - 名 前 を 削 除 し 、 場 合 に よ っ て は そ れ が 参 照 し て い る フ ァ イ ル も 削 除 す る

書 式

#include <unistd.h>

int unlink(const char * pathname );

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

int unlinkat(int dirfd , const char * pathname , int flags );

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

unlinkat ():

glibc 2.10 以 降 :

_POSIX_C_SOURCE >= 200809L

glibc 2.10 よ り 前 :

_ATFILE_SOURCE

説 明

unlink () は フ ァ イ ル シ ス テ ム 上 の 名 前 を 削 除 す る 。 も し そ の 名 前 が フ ァ イ ル へ の 最 後 の リ ン ク (link) で あ り 、 ど の プ ロ セ ス も そ の フ ァ イ ル を オ ー プ ン (open) し て い な け れ ば 、 フ ァ イ ル は 削 除 さ れ る 。 フ ァ イ ル が 使 用 し て い た デ ィ ス ク 上 の 領 域 は 再 利 用 が 可 能 に な る 。

名 前 が フ ァ イ ル へ の 最 後 の リ ン ク で あ っ て も 、 ど こ か の プ ロ セ ス が そ の フ ァ イ ル を 開 い て い る な ら 、 フ ァ イ ル の 最 後 の フ ァ イ ル デ ィ ス ク リ プ タ ー (file descriptor) が 閉 じ ら れ る ま で フ ァ イ ル は 存 在 し 続 け る 。

名 前 が 指 し て い る の が シ ン ボ リ ッ ク リ ン ク な ら 、 そ の リ ン ク を 削 除 す る 。

名 前 が 指 し て い る の が ソ ケ ッ ト 、 FIFO、 デ バ イ ス の 場 合 、 名 前 は 削 除 さ れ る が 、 そ の ソ ケ ッ ト な ど を 開 い て い る プ ロ セ ス は そ の ま ま 使 い 続 け る こ と が で き る 。

unlinkat()

unlinkat () シ ス テ ム コ ー ル は 、 unlink () と rmdir (2) の い ず れ か と 全 く 同 じ 動 作 を す る (ど ち ら と 同 じ に な る か は flags AT_REMOVEDIR フ ラ グ が 指 定 さ れ た か に よ り 決 ま る ) が 、 以 下 で 説 明 す る 点 が 異 な る 。

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

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

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

flags は ビ ッ ト マ ス ク で 、 0 も し く は unlinkat () の 動 作 を 制 御 す る フ ラ グ 値 を 論 理 和 の 形 で 指 定 す る こ と が で き る 。 現 在 の と こ ろ 、 定 義 さ れ て い る フ ラ グ は ひ と つ だ け で あ る 。
AT_REMOVEDIR

デ フ ォ ル ト で は 、 unlinkat () は pathname に 対 し て unlink () と 等 価 な 動 作 を す る 。 AT_REMOVEDIR フ ラ グ が 指 定 さ れ た 場 合 、 pathname に 対 し て rmdir (2) と 等 価 な 動 作 を す る 。

unlinkat () の 必 要 性 に つ い て の 説 明 に つ い て は openat (2) を 参 照 。

返 り 値

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

エ ラ ー

EACCES

pathname を 含 ん で い る デ ィ レ ク ト リ の 書 き 込 み 許 可 が プ ロ セ ス の 実 効 (effective) ユ ー ザ ー ID に 与 え ら れ て い な い か 、 pathname の 中 の デ ィ レ ク ト リ の ど れ か に 検 索 許 可 が 与 え ら れ て い な い ( path_resolution (7) も 参 照 す る こ と )。

EBUSY

シ ス テ ム か 別 の プ ロ セ ス が そ の フ ァ イ ル を 使 用 中 の た め 、 フ ァ イ ル pathname を unlink で き な い 。 例 え ば 、 そ の フ ァ イ ル が マ ウ ン ト ポ イ ン ト の 場 合 や 、 NFS ク ラ イ ア ン ト ソ フ ト ウ ェ ア が そ の フ ァ イ ル が ア ク テ ィ ブ で あ る が 名 前 な し inode (nameless inode) で あ る こ と を 示 す た め に 作 成 し た 場 合 ("NFS silly renamed") な ど が あ る 。

EFAULT

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

EIO

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

EISDIR

pathname が デ ィ レ ク ト リ を 参 照 し て い る 。 (こ れ は POSIX で 規 定 さ れ て い な い 値 で 、 Linux 2.1.132 以 降 で 返 さ れ る 。 )

ELOOP

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

ENAMETOOLONG

pathname が 長 過 ぎ る 。

ENOENT

pathname に 対 応 す る も の が 存 在 し な い か 、 壊 れ た シ ン ボ リ ッ ク リ ン ク で あ る か 、 pathname が 空 で あ る 。

ENOMEM

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

ENOTDIR

pathname の デ ィ レ ク ト リ 部 分 が 、 実 際 に は 、 デ ィ レ ク ト リ で な い 。

EPERM

シ ス テ ム が デ ィ レ ク ト リ に 対 す る unlink 操 作 を 許 可 し て い な い 。 ま た は デ ィ レ ク ト リ に 対 す る unlink 操 作 の た め に 必 要 な 特 権 を 呼 び 出 し 元 の プ ロ セ ス が 持 っ て い な い 。 (こ れ は POSIX で 規 定 さ れ て い る エ ラ ー の 返 し 方 で あ る 。 上 述 の 通 り 、 こ の 場 合 に は Linux は EISDIR を 返 す 。 )

EPERM (Linux の み )

フ ァ イ ル シ ス テ ム が フ ァ イ ル に 対 す る unlink 操 作 を 許 し て い な い 。

EPERM ま た は EACCES

pathname を 含 ん で い る デ ィ レ ク ト リ に ス テ ィ ッ キ ー ビ ッ ト (sticky-bit) ( S_ISVTX ) が 設 定 さ れ て い て 、 プ ロ セ ス の 実 効 ユ ー ザ ー ID が 削 除 し よ う と す る フ ァ イ ル の UID で も そ れ を 含 ん で い る デ ィ レ ク ト リ の も の で も な く 、 か つ プ ロ セ ス に 特 権 が な い (Linux で は CAP_FOWNER ケ ー パ ビ リ テ ィ (capability) が な い )。

EPERM

The file to be unlinked is marked immutable or append-only. (See ioctl_iflags (2).)

EROFS

pathname が 読 み 込 み 専 用 の フ ァ イ ル シ ス テ ム の フ ァ イ ル を 参 照 し て い る 。

unlink () と rmdir (2) で 発 生 す る の と 同 じ エ ラ ー が unlinkat () で も 起 こ る 。 unlinkat () で は 以 下 の エ ラ ー も 発 生 す る 。

EBADF

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

EINVAL

無 効 な フ ラ グ 値 が flags に 指 定 さ れ た 。

EISDIR

pathname が デ ィ レ ク ト リ を 参 照 し て い て 、 flags AT_REMOVEDIR が さ れ て い な か っ た 。

ENOTDIR

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

バ ー ジ ョ ン

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

準 拠

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

unlinkat (): POSIX.1-2008.

注 意

glibc で の 注 意

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

バ グ

NFS プ ロ ト コ ル に 内 在 す る 問 題 に よ り 、 ま だ 使 用 中 の フ ァ イ ル が 想 定 外 に 消 え て し ま う こ と が あ り え る 。

関 連 項 目

rm (1), unlink (1), chmod (2), link (2), mknod (2), open (2), rename (2), rmdir (2), mkfifo (3), remove (3), path_resolution (7), symlink (7)

こ の 文 書 に つ い て

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