FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | ライブラリ | 書式 | 解説 | 戻り値 | エラー | 関連項目 | 規格 | 歴史 | 警告
EXECVE(2)              FreeBSD システムコールマニュアル              EXECVE(2)

名称
     execve, fexecve -- ファイルを実行する

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

書式
     #include <unistd.h>

     int
     execve(const char *path, char *const argv[], char *const envp[]);

     int
     fexecve(int fd, char *const argv[], char *const envp[]);

解説
     execve() システムコールは、呼び出しているプロセスを新しいプロセスに変換し
     ます。新しいプロセスは、新しいプロセスファイルと呼ばれる、名前が path に
     よって指される通常のファイルから構成されます。fexecve() システムコール
     は、実行されるファイルが path の代わりに、ファイル記述子 fd によって決定
     されることを除いて、execve() と同等です。このファイルは、実行形式のオブ
     ジェクトファイル、またはインタプリタのためのデータのファイルのいずれかで
     す。実行形式のオブジェクトファイルは、識別ヘッダに続いて、初期プログラム
     (テキスト) と初期化されたデータのページを表しているデータのページから成り
     ます。追加のページは、0 のデータで初期化されるヘッダによって指定されま
     す。elf(5)a.out(5) を参照してください。

     インタプリタファイルは、次の形式の行で始まります:

           #! interpreter [arg]

     インタプリタファイルが execve されるとき、システムは、実際に、指定された
     インタプリタを execve します。オプションの arg が指定されるなら、それは、
     インタプリタの最初の引数となり、元の execve ファイルの名前は、2 番目の引
     数となります。そうでなければ、元の execve ファイルの名前は、最初の引数と
     なります。オリジナルの引数は、その後の引数となるようにシフトされます。0
     番目の引数は、指定されたインタプリタに設定されます。

     引数 argv は、ヌル文字で終了する文字列への文字ポインタの NULL で終了する
     配列へのポインタです。これらの文字列は、新しいプロセスに利用可能とされる
     引数リストを構成します。少なくとも 1 つの引数が配列に存在しなければなりま
     せん。慣例によって、最初の要素は、実行されたプログラムの名前となるべきで
     す (例えば、path の最後の構成要素)。

     また、引数 envp は、ヌル文字で終了される文字列への文字ポインタの NULL で
     終了される配列へのポインタです。この配列へのポインタは、通常、グローバル
     変数 environ に格納されます。これらの文字列は、直接コマンドへの引数ではな
     い新しいプロセスに情報を渡します (environ(7) を参照)。

     呼び出しているプロセスイメージでオープンされるファイル記述子は、close-on
     exec フラグが設定されるものを除いて、新しいプロセスイメージでオープンし続
     けます (close(2)fcntl(2) を参照)。オープンし続けられる記述子は、
     execve() によって影響を受けません。標準の記述子 (0、1 および 2) のいずれ
     かが、execve() が呼び出される時間にクローズされ、プロセスが set-id のセマ
     ンティックスの結果として特権を得るなら、それらの記述子は、自動的に再オー
     プンされます。特権を与えられるかどうかにかかわらず、プログラムは、これら
     の記述子が execve() の呼び出しに渡ってクローズされ続けると仮定するべきで
     はありません。

     呼び出しているプロセスで無視されるように設定されたシグナルは、新しいプロ
     セスで無視されるように設定されます。呼び出しいているプロセスイメージで捕
     獲されるように設定されたシグナルは、新しいプロセスイメージのデフォルトの
     アクションに設定されます。ブロックされたシグナルは、シグナルのアクション
     への変更にかかわらずブロックされ続けます。シグナルのスタックは、未定義と
     なるようにリセットされます (詳細については、sigaction(2) を参照)。

     新しいプロセスイメージファイルのセットユーザ ID (set-user-ID) モードビッ
     トが設定されるなら (chmod(2) を参照)、新しいプロセスイメージの実効ユーザ
     ID は、新しいプロセスイメージファイルの所有者 ID に設定されます。新しいプ
     ロセスイメージファイルのセットグループ ID (set-group-ID) モードビットが設
     定されるなら、新しいプロセスイメージの実効グループ ID は、新しいプロセス
     イメージファイルのグループ ID に設定されます。(実効グループ ID は、グルー
     プリストの最初の要素です。) 新しいプロセスイメージの実ユーザ ID、実グルー
     プ ID と他のグループ ID は、呼び出しているプロセスイメージと同じであり続
     けます。あらゆるセットユーザ ID (set-user-ID) とセットグループ ID (set
     group-ID) 処理の後に、実効ユーザ ID は、保存セットユーザ ID (saved set
     user-ID) として記録され、実効グループ ID は、保存セットグループ ID (saved
     set-group-ID) として記録されます。これらの値は、後で実効 ID を変更するた
     めに使用されます (setuid(2) を参照)。

     個別のファイルシステムが有効にされた nosuid オプションがあるか、または、
     新しいプロセスファイルがインタプリタファイルであるなら、set-ID ビットは、
     尊重されません。システムコールのトレースは、実効 ID が変更されるなら、無
     効にされます。

     新しいプロセスは、呼び出しているプロセスから次の属性も継承します:

           プロセス ID             getpid(2) を参照
           親プロセス ID           getppid(2) を参照
           プロセスグループ ID     getpgrp(2) を参照
           アクセスグループ        getgroups(2) を参照
           作業ディレクトリ        chdir(2) を参照
           ルートディレクトリ      chroot(2) を参照
           制御端末                termios(4) を参照
           リソースの使用料        getrusage(2) を参照
           インターバルタイマ      getitimer(2) を参照
           リソースの制限          getrlimit(2) を参照
           ファイルモードマスク    umask(2) を参照
           シグナルマスク          sigaction(2), sigprocmask(2) を参照

     プログラムが execve() システムコールの結果として実行されるとき、それは、
     次のように入力されます:

           main(argc, argv, envp)
           int argc;
           char **argv, **envp;

     ここで、argc は、argv の要素の数 (``arg カウント'') で、引数自体への文字
     ポインタの配列を指す argv です。

     fexecve() は、fd のファイルオフセットを無視します。実行パーミッションは、
     fexecve() によってチェックされるので、ファイル記述子 fd は、O_EXEC フラグ
     でオープンされる必要はありません。しかしながら、実行されるファイルが、
     exec を行うために準備しているプロセスに対して読み込みパーミッションを拒否
     するなら、fexecve() に fd を提供する唯一の方法は、fd をオープンするとき、
     O_EXEC フラグを使用することです。実行されるファイルが書き込みのためにオー
     プンすることができないことに注意してください。

戻り値
     execve() システムコールが新しいプロセスイメージがある現在のプロセスイメー
     ジをオーバレイするので、成功した呼び出しは、返るプロセスがありません。
     execve() が、呼び出しているプロセスに返るなら、エラーが起こっています。返
     り値は、-1 であり、グローバル変数 errno は、エラーを示す値に設定されま
     す。

エラー
     execve() システムコールは、次の場合に失敗し、呼び出しているプロセスに返り
     ます:

     [ENOTDIR]          パス接頭辞の構成要素がディレクトリではありません。

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

     [ENOEXEC]          インタプリトされるスクリプトを呼び出しているとき、最初
                        の行の長さが、#! 接頭辞と終りの改行を含めて
                        MAXSHELLCMDLEN 文字を越えています。

     [ENOENT]           新しいプロセスファイルが存在しません。

     [ELOOP]            パス名の変換で、あまりにも多くのシンボリックリンクに遭
                        遇しました。

     [EACCES]           検索パーミッションが、パス接頭辞の構成要素に対して拒否
                        されます。

     [EACCES]           新しいプロセスファイルが、通常のファイルではありませ
                        ん。

     [EACCES]           新しいプロセスファイルのモードが、実行パーミッションを
                        拒否します。

     [ENOEXEC]          新しいプロセスファイルには適切なアクセスパーミッション
                        がありますが、そのヘッダに無効のマジックナンバがありま
                        す。

     [ETXTBSY]          新しいプロセスファイルが、いくつかのプロセスによって書
                        き込むのために現在オープンされている純粋な手続き (共有
                        テキスト) ファイルです。

     [ENOMEM]           新しいプロセスが、強制された最大値 (getrlimit(2)) に
                        よって許可されるより多い仮想メモリを必要としています。

     [E2BIG]            新しいプロセスの引数リストのバイト数が、システムに強制
                        された制限より大きくなっています。この制限は、
                        sysctl(3) MIB 変数 KERN_ARGMAX によって指定されます。

     [EFAULT]           新しいプロセスファイルが、そのヘッダのサイズ値によって
                        示されるほど長くありません。

     [EFAULT]           path, argv または envp 引数が、不正なアドレスを指して
                        います。

     [EIO]              ファイルシステムから読み込んでいる間に、I/O エラーが、
                        起こりました。

     さらに、fexecve() は、次の場合に失敗し、呼び出しているプロセスに返ります:

     [EBADF]            fd 引数が、実行のために、オープンしている有効なファイ
                        ル記述子ではありません。

関連項目
     ktrace(1), _exit(2), fork(2), open(2), execl(3), exit(3), sysctl(3),
     a.out(5), elf(5), fdescfs(5), environ(7), mount(8)

規格
     execve() システムコールは、特定の状況で記述子 0、1 および 2 を再オープン
     することを除いて IEEE Std 1003.1-2001 (``POSIX.1'') に適合しています。標
     準の将来の更新は、この振る舞いを必要とすることが期待され、その上、特権が
     ないプロセスのためのデフォルトとなるかもしれません。インタプリトされるプ
     ログラムを実行するためのサポートは、拡張です。fexecve() システムコール
     は、The Open Group Extended API Set 2 仕様に従っています。

歴史
     execve() システムコールは、4.2BSD で登場しました。fexecve() システムコー
     ルは、FreeBSD 8.0 で登場しました。

警告
     プログラムがスーパユーザでないユーザに setuid されているが、実 uid が
     ``root'' であるとき、実行されるなら、プログラムには、スーパユーザと同様の
     権限のいくつかがあります。

     fexecve() を通してインタプリトされるプログラムを実行するとき、カーネル
     は、インタプリタへの 2 番目の引数として /dev/fd/n を供給します、ここで、n
     は、fexecve() への fd 引数に渡されるファイル記述子です。この構成が正しく
     動作するように、fdescfs(5) ファイルシステムは、/dev/fd にマウントされるこ
     ととなります。

FreeBSD 11.2                  September 21, 2010                  FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索