Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rename(2) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

open(2)

RENAME(2)  —  NEWS-OS Programmer’s Manual

名称

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

形式

rename(from, to)
char ∗from, ∗to;

解説

rename は、 from という名前のリンクを to にリネームします。 to が既に存在している場合には、 まず それが削除されます。 from と to の両方は、 同じ種類でなければならず(つまり、 両方がディレクトリであるか、 または両方がディレクトリでない)、 また 同じファイルシステム上になければなりません。

rename は、 たとえシステムがオペレーションの途中でクラッシュしても、 to が常に存在することを 保証します。

from の最後の構成要素がシンボリックリンクである場合には、 そのシンボリックリンクが指しているファイルやディレクトリではなく、 そのシンボリックリンク自体を リネームします。

警告

ファイルシステムグラフ内にループがある場合には、 システムはデッドロックすることがあります。 このループは、 ディレクトリ “a” 内のエントリ(例えば、 “a/foo”) がディレクトリ “b” へのハードリンクになっていて、 ディレクトリ “b” 内のエントリ(例えば、 “b/bar”) がディレクトリ “a” へのハードリンクに なっているような場合に生じます。 このようなループが存在していて、 2 つの別々のプロセスが、 それぞれ “rename a/foo b/bar” と “rename b/bar a/foo” を 実行すると、 システムは修正のために両方のディレクトリを ロックしようとしてデッドロックします。 ディレクトリへのハードリンクは、 システム管理者によってシンボリックリンクに置き換えられる必要があります。

リターン値

オペレーションが成功した場合には、 値 0 が返されます。 そうでない場合、 rename は −1 を 返し、 グローバル変数 errno が失敗の理由を 示します。

エラー

以下に示されている項目のいずれかが真である場合には、 rename は失敗し、 引数で指定されたどちらのファイルも影響を 受けません。

[EINVAL] パス名に最上位ビットのセットされたキャラクタが含まれている。 (NEWS-OS ではおきない。)

[ENAMETOOLONG]
いずれかのパス名の 1 構成要素が 255 バイトを 超えている、 またはパス名全体が 1023 バイトを超えている。

[ENOENT] from パスの構成要素が存在していない、 または to パスプレフィックスが存在していないものがある。

[EACCES] いずれかのパスプレフィックスの構成要素について サーチパーミッションが否定されている。

[EACCES] 要求されたリンクが、 書き込みパーミッションを 否定しているモードのディレクトリへの書き込みを 必要としている。

[EPERM] from の収められているディレクトリが sticky としてマークされていて、 その収容しているディレクトリも、 from も、 その有効ユーザ ID によって所有されていない。

[EPERM] to ファイルが存在し、 to の収められているディレクトリが sticky としてマークされていて、 その収容しているディレクトリも、 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)

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026