CHROOT(2) | Linux Programmer's Manual | CHROOT(2) |
名前
chroot -ルート・ディレクトリを変更する書式
#include <unistd.h>glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):
- glibc 2.2.2 以降:
-
_BSD_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
glibc 2.2.2 より前: なし
説明
chroot() は、呼び出し元プロセスのルート・ディレクトリを path で指定されたディレクトリに変更する。このディレクトリ以下が / から始まるパス名として使われる。このルート・ディレクトリは呼び出し元のプロセスの全ての子プロセスに受け継がれる。
mkdir foo; chroot foo; cd ..
このコールはオープンファイルディスクリプタをクローズしないので、このようなファイルディスクリプタは chroot ツリーの外にあるファイルにアクセスできる。
返り値
成功した場合は 0 が返される。エラーの場合は-1 が返され、 errno が適切に設定される。エラー
ファイルシステムによっては他のエラーが返される事がある。一般的なエラーを以下に挙げる:- EACCES
- パス名の構成要素に検索許可がない ( path_resolution(7) も見よ)。
- EFAULT
- path がアクセスできるアドレス空間外を指している。
- EIO
- I/O エラーが発生した。
- ELOOP
- path を解決する際に遭遇したシンボリック・リンクが多過ぎる。
- ENAMETOOLONG
- path が長過ぎる。
- ENOENT
- ファイルが存在しない。
- ENOMEM
- カーネルに十分なメモリがない。
- ENOTDIR
- path の構成要素がディレクトリではない。
- EPERM
- 呼び出し側に十分な特権がない。
準拠
SVr4, 4.4BSD, SUSv2 (但し、SUSv2 では過去の名残とされている)。この関数は POSIX.1-2001 にはない。注意
fork(2) で作成された子プロセスは、親プロセスのルート・ディレクトリを継承する。 execve(2) の場合も、ルート・ディレクトリは変更されない。関連項目
chdir(2), path_resolution(7)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-09-20 | Linux |