RENAME(2)

名称
rename - ファイル名を変更する

ライブラリ
libc

書式
<stdio.h> int rename(const char *from, const char *to)

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

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

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

戻り値

エラー
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() 関数は p1003.1-96 に準拠しています。