スポンサーリンク

RENAME(2) FreeBSD システムコールマニュアル RENAME(2)

名称

rename − ファイル名を変更する

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <stdio.h>

int

rename(const char *from, const char *to);

解説

rename() システムコールによって from と名づけられたリンクを to に変更しま す。 to がすでに存在する場合は、先にこれを削除します。 fromto は同じ タイプでなければならず (両方ともディレクトリであるか、両方ともディレクト リではないか)、同じファイルシステム上に存在している必要があります。

to が既に存在する場合には、操作の途中でシステムがクラッシュしたとしても、 rename() システムコールは to のインスタンスが必ず存在することを保証しま す。

from の最後の構成要素がシンボリックリンクの場合、それが指しているファイル またはディレクトリではなく、そのシンボリックリンクの名前が変更されます。

戻り値

関数 rename() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。

エラー

rename() システムコールは次の場合に失敗し、いずれの引数ファイルも影響を受 けません:

       [ENAMETOOLONG]

いずれかのパス名の構成要素が 255 文字を越えているか、 またはいずれかのパス名全体の長さが 1023 文字を越えてい ます。

[ENOENT]
from
パスの構成要素が存在しないか、または to の前置パ ス名が存在しません。

[EACCES]
指定されたパスには、検索が許可されていないディレクトリ が含まれています。

[EACCES]
指定されたリンクは、書込みが許可されていないディレクト リへの書込みを要求しています。

[EPERM]
from
ファイルを含むディレクトリにスティッキビットが設 定されており、そのディレクトリと from のどちらの所有者 も実効ユーザ ID とは異なっています。

[EPERM]
to
引数によって指されるファイルが存在し、かつ to を含 んでいるディレクトリにスティッキビットが設定されてお り、そのディレクトリと to ファイルのどちらの所有者も実 効ユーザ ID とは異なっています。

[ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多 すぎます。

[ENOTDIR]
パスの構成要素中にディレクトリ以外のものが含まれていま す。

[ENOTDIR]
from
引数はディレクトリですが、 to はディレクトリでは ありません。

[EISDIR]
to
引数はディレクトリですが、 from はディレクトリでは ありません。

[EXDEV]
to
によって指定されたリンク、および from によって指定 されたファイルが異なる論理デバイス (ファイルシステム) 上にあります。実装がクロスデバイスリンクを許容する場 合、このエラーコードは返らないことに注意してください。

[ENOSPC]
ディレクトリを格納しているファイルシステム上の空間が枯 渇したため、新しい名前のためのエントリを置くディレクト リを拡張できません。

[EDQUOT]
ディレクトリを格納しているファイルシステム上のディスク ブロックのユーザのクォータが枯渇したため、新しい名前の ためのエントリを置くディレクトリを拡張できません。

[EIO]
ディレクトリエントリを作成または更新している間に入出力 エラーが発生しました。

[EROFS]
指定されたリンクは、読取り専用ファイルシステム上のディ レクトリへの書込みを要求しています。

[EFAULT]
path は、プロセスに割り当てられたアドレス空間の範囲外 を指しています。

[EINVAL]
from
引数が to の親ディレクトリであるか、 ‘.’ または ‘..’ に名前を変更しようとしました。

[ENOTEMPTY]
to
引数はディレクトリであり、空ではありません。

関連項目

open(2), symlink(7)

規格

rename() システムコールは ISO/IEC 9945-1:1996 (‘‘POSIX.1’’) に適合してい ます。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク