execute
「execute」の意味
「execute」とは、主に3つの意味がある。まず、何らかの計画や命令を実行することを指す。例えば、プロジェクトの計画を実行したり、上司からの指示を遂行する場合に用いられる。次に、コンピューターのプログラムやコマンドを実行することを意味する。最後に、死刑を執行することも指す。ただし、一般的には前述の2つの意味がよく使われる。「execute」の発音・読み方
「execute」の発音は、/ɪɡˈzɛk.juːt/であり、IPAのカタカナ読みでは「イグゼキュート」となる。日本人が発音するカタカナ英語では「エグゼキュート」と読むことが一般的である。「execute」の定義を英語で解説
Execute is defined as "to carry out or perform a particular action, plan, or order" or "to run a computer program or command." It can also mean "to carry out a death sentence," but this meaning is less commonly used in everyday conversation.「execute」の類語
「execute」の類語には、以下のようなものがある。実行する
carry out, perform, implement, accomplishプログラムを実行する
run, launch, start, initiate死刑を執行する
put to death, carry out a death sentence「execute」に関連する用語・表現
「execute」に関連する用語や表現は以下の通りである。実行可能な
executable実行中の
executing, running, in progress実行権限
execution authority, execution rights「execute」の例文
1. Please execute the plan as discussed.(計画を話し合った通りに実行してください。)2. The software will execute the command automatically.(ソフトウェアはコマンドを自動的に実行する。)
3. The manager is responsible for executing the project.(マネージャーはプロジェクトの実行に責任がある。)
4. The program failed to execute properly.(プログラムは正常に実行できなかった。)
5. The government decided to execute the new policy.(政府は新しい政策を実行することを決定した。)
6. The system will execute a series of tasks.(システムは一連のタスクを実行する。)
7. The soldiers executed the orders without hesitation.(兵士たちは命令をためらいなく実行した。)
8. The court sentenced him to death, but the execution was later suspended.(裁判所は彼に死刑を宣告したが、後に執行が停止された。)
9. To execute this function, you need to press the button.(この機能を実行するには、ボタンを押す必要がある。)
10. The team executed the strategy flawlessly.(チームは戦略を完璧に実行した。)
exec
(execute から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/01/25 22:13 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2025年10月)
|
exec はUnix系オペレーティングシステム (OS) における関数群で、関数の引数として渡されたプログラムで動作中の当該プロセスを完全に置換する機能を有する。新たなプロセスを生成するわけではないので、プロセス識別子 (PID) は変化しないが、プロセスの仮想空間上のスタック、ヒープ、データなどは全て新たなものに置換される。
概要
execl、execlp、execv、execvp では新たなプロセスイメージで現在の環境変数を受け継ぐ。これらは内部的には、呼出元の環境変数をそのまま execve へ渡す。
exec を呼び出したときにオープン済みだったファイルは、新たなプロセスイメージとなってもオープンされたままである。これを使って、新たなプロセスイメージの標準ストリーム(stdin、stdout、stderr)を事前に設定する。逆に、標準ストリームをクローズした上で exec を実行することにより、新たなプロセスイメージにそれらを使わせないようにすることも可能である。
exec を呼び出したプロセスのシグナル動作は、シグナルハンドラが設定されているシグナルについてはデフォルトにリセットし、無視する設定のシグナルはそのまま無視し続ける。[1]マスクによるシグナルのブロックは、exec 実行後もそのまま引き継がれる。[2] これらの仕様の応用例として、シェルが開始したプロセスについて、シェルからの設定で SIGHUP を無視させることにより、制御端末が不意に切断されてしまってもフォアグラウンドプロセスグループが実行を続けることができる。[3]
DOSにて exec 関数群の1つを使ってプログラムを実行する場合、その実行ファイルのヘッダにある "maximum allocation" がデフォルト値 0xFFFF にセットされているかのようにプログラムをメモリにロードする。EXEHDRユーティリティを使えば、その値を変更できる。しかしそれを行って exec の一種でその実行ファイルを実行しようとすると、コマンドラインから直接起動した場合や spawn 系関数群を使って起動した場合とプログラムの振る舞いが変わってしまうことがある。
Unixシェルの多くにも exec という組み込みコマンドがあり、指定されたプログラムでシェルプロセスを上書きする[4]。この機能は、環境変数などを設定して実際のプログラムを実行するラッパースクリプトによく用いられる。exec を使えば、実際に実行したいプログラムが起動した際にシェルが使用していたリソースを解放することができる[5]。
プロトタイプ
POSIX標準では unistd.h、DOSやOS/2やWindowsでは process.h に exec 関数群が宣言されている。
-
int execl(char const *path, char const *arg0, ...); -
int execle(char const *path, char const *arg0, ..., char const * const *envp); -
int execlp(char const *file, char const *arg0, ...); -
int execv(char const *path, char const * const * argv); -
int execve(char const *path, char const * const *argv, char const * const *envp); -
int execvp(char const *file, char const * const *argv);
実装によっては、関数名のプレフィックスとしてアンダースコアを付けている場合がある(例えば、_execl)。
現代のたいていのUnixにおける実装では、最も汎用的なexecveをシステムコールとし(すなわちexecve(2))、他はそれを呼ぶライブラリ関数(たとえばexec(3))としている。
関数名
各関数の名前は exec(execute、すなわち「実行」)を核とし、それに次のような文字がいくつか続く形式である。
- e - 環境変数群へのポインタ配列を明示的に新プロセスイメージに渡す。
- l - コマンドライン引数群を個々に関数の引数として渡す。
- p - file 引数で示された実行ファイルのある場所を PATH という環境変数を使って検索する。
- v - コマンドライン引数群をポインタ配列として関数に渡す。
引数
- path - 新プロセスイメージとして実行すべきファイルのパス名を指定する。
- file - 新プロセスイメージとして実行すべきファイルのパス名を指定する。ただしスラッシュが含まれていない場合は環境変数 PATH を使って実行すべきファイルのパス名を検索する。
- arg0 - 実行ファイルの名前(へのポインタ)。arg0 から新プロセスイメージに渡される引数のポインタが続く。arg0 は通常 path または file と同じである。arg0 を使って自身の位置を知ろうとする実行ファイルもあるが、それが正しいかどうかは保証されない。
- argv - 新プロセスイメージに渡す引数群へのポインタ配列。
- envp - 環境変数群のポインタ配列。
envpの指す配列は、ヌル終端の文字列へのポインタ配列であり、個々の文字列は次の形式である。
-
name=value
ここで、name は環境変数名、value はその変数の値である。envp 配列の最後には必ずnullがなければならない。envp 自体がnullの場合は、現在の環境変数設定をそのまま受け継ぐ。
戻り値
通常 exec 関数は現在のプロセスを置換するので、元々それを呼び出したプロセスイメージに戻り値を返すことはできない。プロセスには終了ステータスがあるが、それを受け取るのは親プロセスである。
exec 関数が呼び出したプロセスに戻るのは、エラーが発生し、かつ元のプロセスをまだ破壊していない場合に限られる。その場合の戻り値は -1 で、errno には以下のような値が設定される。
| 名前 | 意味 |
|---|---|
| E2BIG | 引数リストがシステムの制限を越えている。 |
| EACCES | 指定されたファイルが実行できないファイルである(あるいはロックされている)。 |
| ENOENT | 指定されたファイルまたはパス名が存在しない。 |
| ENOMEM | 新たなプロセスイメージを実行するためのメモリが足りない。 |
exec 実行中、元のプロセスを破壊し始めてからエラーが発生した場合は、戻るべきプロセスが存在しないためそのプロセス自体を終了させる。
脚注
- ^ OS や標準によっては、SIGCHLD に限り無条件にデフォルト動作にリセットする記述がある。ただし、SIGCHLD のデフォルト動作は無視であるため、これによる挙動の変化はない。
- ^ “environ, execl, execle, execlp, execv, execve, execvp, fexecve — execute a file”. IEEE Std 1003.1-2024. The IEEE and The Open Group. 2025年7月27日閲覧。
- ^
tcsh(1)– FreeBSD General Commands Manual Pages (en) - ^ https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Builtin-Commands - Shell Builtin Commands in bash manual
- ^ https://tldp.org/LDP/abs/html/wrapper.html
関連項目
外部リンク
exec(3)– JM Project Linux Library Functions マニュアルexecve(2)– JM Project Linux System Calls マニュアル
- executeのページへのリンク