|
exec はUnix系オペレーティングシステムにおける関数群で、関数の引数として渡されたプログラムで動作中の当該プロセスを完全に置換する機能を有する。新たなプロセスを生成するわけではないので、プロセス識別子 (PID) は変化しないが、プロセスの仮想空間上のスタック、ヒープ、データなどは全て新たなものに置換される。 == 概要 == ''execl''、''execlp''、''execv''、''execvp'' では新たなプロセスイメージで現在の環境変数を受け継ぐ。 ''exec'' を呼び出したときにオープン済みだったファイルは、新たなプロセスイメージとなってもオープンされたままである。これを使って、新たなプロセスイメージの標準ストリーム(stdin、stdout、stderr)を事前に設定する。 MS-DOSにて ''exec'' 関数群の1つを使ってプログラムを実行する場合、その実行ファイルのヘッダにある "maximum allocation" がデフォルト値 0xFFFF にセットされているかのようにプログラムをメモリにロードする。EXEHDRユーティリティを使えば、その値を変更できる。しかしそれを行って ''exec'' の一種でその実行ファイルを実行しようとすると、コマンドラインから直接起動した場合や ''spawn'' 系関数群を使って起動した場合とプログラムの振る舞いが変わってしまうことがある。 Unixシェルの多くにも ''exec'' という組み込みコマンドがあり、指定されたプログラムでシェルプロセスを上書きする〔http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands - Shell Builtin Commands in bash manual〕。この機能は、環境変数などを設定して実際のプログラムを実行するラッパースクリプトによく用いられる。''exec'' を使えば、実際に実行したいプログラムが起動した際にシェルが使用していたリソースを解放することができる〔http://tldp.org/LDP/abs/html/wrapper.html〕。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Exec」の詳細全文を読む スポンサード リンク
|