exec()とは? わかりやすく解説

exec

(PHP 4, PHP 5)
exec — 外部プログラムを実行する

説明

string exec ( string command [, array &output [, int &return_var]] )
exec() は指定されたコマンド command を実行します。

パラメータ

command
実行するコマンド
output
引数 output が存在する場合、指定した配列は、 コマンドからの出力の各行で埋められます。 \n のような後に続く空白は、この配列には含まれません。 配列に既に何らかの要素が 含まれる場合は、exec() は配列の最後に追加される ことに注意してください。関数が要素を追加することを望まないのなら、 それが exec() に渡される前に、配列の unset() を呼び出してください。
return_var
引数return_varが、引数 output と共に存在する場合、実行したコマンドの ステータスがこの変数に書かれます。

返り値

コマンド結果の最後の行を返します。コマンドを実行し、 一切干渉を受けずに直接コマンドから全てのデータを受けとる必要が あるならば、PassThru() 関数を使ってください。
実行されたコマンドの出力を取得するには、必ず output パラメータを設定・使用してください。

例 1873. exec() の例
<?php
// ("whoami" コマンドをパスに有するシステム上で)
// 実行中のphp/httpdプロセスを所有するユーザの名前を出力
echo exec('whoami');
?>


注意


警告
ユーザが入力したデータをこの関数に 渡すことを許可する場合、ユーザが任意のコマンドを実行できるようシステムを欺くことが できないように escapeshellarg() または escapeshellcmd() を適用する必要があります。

注意: この関数を用いてプログラムを開始し、 バックグラウンドで実行させたままにしたい場合、このプログラムの出力をファイル または他の出力ストリームにリダイレクトするようにする必要があります。さもないと、 PHP はプログラム実行終了までにハングしてしまいます。
注意: セーフモード が有効な場合、 safe_mode_exec_dirの中にある実行プログラムのみ実行可能です。 実際的な理由により、現在、実行プログラムへのパスに ..を 含めることはできません。

警告
セーフモードが有効な場合、コマンド文字列は escapeshellcmd() でエスケープされます。 つまり、echo y | echo x は、echo y \| echo x となります。

参考

system()
passthru()
escapeshellcmd()
pcntl_exec()
system()
バックティック演算子


Exec クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

Exec タスク実装ます。このタスク作成して実行するには、プロジェクト ファイルExec 要素使用します使用法パラメータ情報については、「Exec タスク」を参照してください

名前空間: Microsoft.Build.Tasks
アセンブリ: Microsoft.Build.Tasks (microsoft.build.tasks.dll 内)
構文構文

Public Class Exec
    Inherits ToolTaskExtension
public class Exec : ToolTaskExtension
public ref class Exec : public
 ToolTaskExtension
public class Exec extends ToolTaskExtension
public class Exec extends
 ToolTaskExtension
継承階層継承階層
System.Object
   Microsoft.Build.Utilities.Task
     Microsoft.Build.Utilities.ToolTask
       Microsoft.Build.Tasks.ToolTaskExtension
        Microsoft.Build.Tasks.Exec
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Exec メンバ
Microsoft.Build.Tasks 名前空間

Exec コンストラクタ

メモ : このコンストラクタは、.NET Framework version 2.0新しく追加されたものです。

Exec クラス新しインスタンス初期化します。

名前空間: Microsoft.Build.Tasks
アセンブリ: Microsoft.Build.Tasks (microsoft.build.tasks.dll 内)
構文構文

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報

.NET Framework

サポート対象 : 2.0
参照参照

関連項目

Exec クラス
Exec メンバ
Microsoft.Build.Tasks 名前空間

Exec プロパティ


パブリック プロパティパブリック プロパティ

( プロテクト プロパティ参照)
  名前 説明
パブリック プロパティ BuildEngine  タスクによって使用される IBuildEngine オブジェクトインスタンス取得または設定します。 ( Task から継承されます。)
パブリック プロパティ Command  
パブリック プロパティ ExitCode  実行可能ファイルから返され終了コード取得します。 ( ToolTask から継承されます。)
パブリック プロパティ HostObject  タスク関連付けられているホスト オブジェクト取得または設定します。 ( Task から継承されます。)
パブリック プロパティ IgnoreExitCode  
パブリック プロパティ Log  タスク ログ メソッド格納している TaskLoggingHelperExtension クラスインスタンス取得します。 ( ToolTaskExtension から継承されます。)
パブリック プロパティ Outputs  
パブリック プロパティ StdErrEncoding  
パブリック プロパティ StdOutEncoding  
パブリック プロパティ Timeout  実行可能なタスク終了してからの時間取得または設定します。 ( ToolTask から継承されます。)
パブリック プロパティ ToolPath  実行する実行可能ファイルへのパス取得または設定します。 ( ToolTask から継承されます。)
パブリック プロパティ WorkingDirectory  
プロテクト プロパティプロテクト プロパティ
  名前 説明
プロテクト プロパティ Bag  派生タスク クラス使用されるパラメータコレクション取得します。 ( ToolTaskExtension から継承されます。)
プロテクト プロパティ EnvironmentOverride  PATH 環境変数オーバーライド値を取得します。 ( ToolTask から継承されます。)
プロテクト プロパティ HelpKeywordPrefix  リソース名からヘルプ キーワードを作成するために使用するプレフィックス取得または設定します。 ( Task から継承されます。)
プロテクト プロパティ ResponseFileEncoding  応答ファイルEncoding取得します。 ( ToolTask から継承されます。)
プロテクト プロパティ StandardErrorEncoding オーバーライドされます。  
プロテクト プロパティ StandardErrorLoggingImportance オーバーライドされます。  
プロテクト プロパティ StandardOutputEncoding オーバーライドされます。  
プロテクト プロパティ StandardOutputLoggingImportance オーバーライドされます。  
プロテクト プロパティ TaskResources  タスク関連付けられているカルチャ固有のリソース取得または設定します。 ( Task から継承されます。)
プロテクト プロパティ ToolName オーバーライドされます。  
参照参照

関連項目

Exec クラス
Microsoft.Build.Tasks 名前空間

Exec メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
  名前 説明
プロテクト メソッド AddCommandLineCommands オーバーライドされます。  
プロテクト メソッド AddResponseFileCommands  指定した CommandLineBuilderExtension に、コマンド ライン ツール応答ファイルか実行できるスイッチおよびその他の情報設定します。 ( ToolTaskExtension から継承されます。)
プロテクト メソッド CallHostObjectToExecute  タスクの処理を実行するホスト オブジェクト呼び出します。 ( ToolTask から継承されます。)
プロテクト メソッド ExecuteTool オーバーライドされます。  
プロテクト メソッド Finalize  Objectガベージ コレクションにより収集される前に、その Objectリソース解放しその他のクリーンアップ操作実行できるようにします。 ( Object から継承されます。)
プロテクト メソッド GenerateCommandLineCommands  コマンド ライン ツールが、応答ファイルかではなくコマンド ラインから直接実行する必要があるスイッチおよびその他の情報取得します。 ( ToolTaskExtension から継承されます。)
プロテクト メソッド GenerateFullPathToTool オーバーライドされます。  
プロテクト メソッド GenerateResponseFileCommands  応答ファイル指定するためにコマンド ライン ツール使用されるスイッチ取得します。 ( ToolTaskExtension から継承されます。)
プロテクト メソッド GetBoolParameterWithDefault  指定したブール型パラメータの値を取得します。 ( ToolTaskExtension から継承されます。)
プロテクト メソッド GetIntParameterWithDefault  指定した整数パラメータの値を取得します。 ( ToolTaskExtension から継承されます。)
プロテクト メソッド GetResponseFileSwitch  応答 (.rsp) ファイル指定するために実行可能ファイルによって使用されコマンド ライン スイッチ返します。 ( ToolTask から継承されます。)
プロテクト メソッド GetWorkingDirectory オーバーライドされます。  
プロテクト メソッド HandleTaskExecutionErrors オーバーライドされます。  
プロテクト メソッド InitializeHostObject  タスクホスト オブジェクト初期化します。 ( ToolTask から継承されます。)
プロテクト メソッド LogEventsFromTextOutput  単一行のテキスト解析して標準形式エラーまたは警告識別します。 ( ToolTask から継承されます。)
プロテクト メソッド LogPathToTool オーバーライドされます。  
プロテクト メソッド LogToolCommand オーバーライドされます。  
プロテクト メソッド MemberwiseClone  現在の Object簡易コピー作成します。 ( Object から継承されます。)
プロテクト メソッド SkipTaskExecution  タスク実行スキップする必要があるかどうか示します。 ( ToolTask から継承されます。)
プロテクト メソッド ValidateParameters オーバーライドされます。  
参照参照

関連項目

Exec クラス
Microsoft.Build.Tasks 名前空間

Exec メンバ

Exec タスク実装ます。このタスク作成して実行するには、プロジェクト ファイルExec 要素使用します使用法パラメータ情報については、「Exec タスク」を参照してください

Exec データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド Exec  
パブリック プロパティパブリック プロパティ
( プロテクト プロパティ参照)
  名前 説明
パブリック プロパティ BuildEngine  タスクによって使用される IBuildEngine オブジェクトインスタンス取得または設定します。(Task から継承されます。)
パブリック プロパティ Command  
パブリック プロパティ ExitCode  実行可能ファイルから返され終了コード取得します。(ToolTask から継承されます。)
パブリック プロパティ HostObject  タスク関連付けられているホスト オブジェクト取得または設定します。(Task から継承されます。)
パブリック プロパティ IgnoreExitCode  
パブリック プロパティ Log  タスク ログ メソッド格納している TaskLoggingHelperExtension クラスインスタンス取得します。(ToolTaskExtension から継承されます。)
パブリック プロパティ Outputs  
パブリック プロパティ StdErrEncoding  
パブリック プロパティ StdOutEncoding  
パブリック プロパティ Timeout  実行可能なタスク終了してからの時間取得または設定します。(ToolTask から継承されます。)
パブリック プロパティ ToolPath  実行する実行可能ファイルへのパス取得または設定します。(ToolTask から継承されます。)
パブリック プロパティ WorkingDirectory  
プロテクト プロパティプロテクト プロパティ
  名前 説明
プロテクト プロパティ Bag  派生タスク クラス使用されるパラメータコレクション取得します。(ToolTaskExtension から継承されます。)
プロテクト プロパティ EnvironmentOverride  PATH 環境変数オーバーライド値を取得します。(ToolTask から継承されます。)
プロテクト プロパティ HelpKeywordPrefix  リソース名からヘルプ キーワードを作成するために使用するプレフィックス取得または設定します。(Task から継承されます。)
プロテクト プロパティ ResponseFileEncoding  応答ファイルEncoding取得します。(ToolTask から継承されます。)
プロテクト プロパティ StandardErrorEncoding オーバーライドされます。  
プロテクト プロパティ StandardErrorLoggingImportance オーバーライドされます。  
プロテクト プロパティ StandardOutputEncoding オーバーライドされます。  
プロテクト プロパティ StandardOutputLoggingImportance オーバーライドされます。  
プロテクト プロパティ TaskResources  タスク関連付けられているカルチャ固有のリソース取得または設定します。(Task から継承されます。)
プロテクト プロパティ ToolName オーバーライドされます。  
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
  名前 説明
プロテクト メソッド AddCommandLineCommands オーバーライドされます。  
プロテクト メソッド AddResponseFileCommands  指定した CommandLineBuilderExtension に、コマンド ライン ツール応答ファイルか実行できるスイッチおよびその他の情報設定します。 (ToolTaskExtension から継承されます。)
プロテクト メソッド CallHostObjectToExecute  タスクの処理を実行するホスト オブジェクト呼び出します。 (ToolTask から継承されます。)
プロテクト メソッド ExecuteTool オーバーライドされます。  
プロテクト メソッド Finalize  Objectガベージ コレクションにより収集される前に、その Objectリソース解放しその他のクリーンアップ操作実行できるようにします。 (Object から継承されます。)
プロテクト メソッド GenerateCommandLineCommands  コマンド ライン ツールが、応答ファイルかではなくコマンド ラインから直接実行する必要があるスイッチおよびその他の情報取得します。 (ToolTaskExtension から継承されます。)
プロテクト メソッド GenerateFullPathToTool オーバーライドされます。  
プロテクト メソッド GenerateResponseFileCommands  応答ファイル指定するためにコマンド ライン ツール使用されるスイッチ取得します。 (ToolTaskExtension から継承されます。)
プロテクト メソッド GetBoolParameterWithDefault  指定したブール型パラメータの値を取得します。 (ToolTaskExtension から継承されます。)
プロテクト メソッド GetIntParameterWithDefault  指定した整数パラメータの値を取得します。 (ToolTaskExtension から継承されます。)
プロテクト メソッド GetResponseFileSwitch  応答 (.rsp) ファイル指定するために実行可能ファイルによって使用されコマンド ライン スイッチ返します。 (ToolTask から継承されます。)
プロテクト メソッド GetWorkingDirectory オーバーライドされます。  
プロテクト メソッド HandleTaskExecutionErrors オーバーライドされます。  
プロテクト メソッド InitializeHostObject  タスクホスト オブジェクト初期化します。 (ToolTask から継承されます。)
プロテクト メソッド LogEventsFromTextOutput  単一行のテキスト解析して標準形式エラーまたは警告識別します。 (ToolTask から継承されます。)
プロテクト メソッド LogPathToTool オーバーライドされます。  
プロテクト メソッド LogToolCommand オーバーライドされます。  
プロテクト メソッド MemberwiseClone  現在の Object簡易コピー作成します。 (Object から継承されます。)
プロテクト メソッド SkipTaskExecution  タスク実行スキップする必要があるかどうか示します。 (ToolTask から継承されます。)
プロテクト メソッド ValidateParameters オーバーライドされます。  
参照参照

関連項目

Exec クラス
Microsoft.Build.Tasks 名前空間

exec

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/04/11 04:28 UTC 版)

execUnix系オペレーティングシステムにおける関数群で、関数の引数として渡されたプログラムで動作中の当該プロセスを完全に置換する機能を有する。新たなプロセスを生成するわけではないので、プロセス識別子 (PID) は変化しないが、プロセスの仮想空間上のスタック、ヒープ、データなどは全て新たなものに置換される。

概要

execlexeclpexecvexecvp では新たなプロセスイメージで現在の環境変数を受け継ぐ。

exec を呼び出したときにオープン済みだったファイルは、新たなプロセスイメージとなってもオープンされたままである。これを使って、新たなプロセスイメージの標準ストリーム(stdin、stdout、stderr)を事前に設定する。

MS-DOSにて exec 関数群の1つを使ってプログラムを実行する場合、その実行ファイルのヘッダにある "maximum allocation" がデフォルト値 0xFFFF にセットされているかのようにプログラムをメモリにロードする。EXEHDRユーティリティを使えば、その値を変更できる。しかしそれを行って exec の一種でその実行ファイルを実行しようとすると、コマンドラインから直接起動した場合や spawn 系関数群を使って起動した場合とプログラムの振る舞いが変わってしまうことがある。

Unixシェルの多くにも exec という組み込みコマンドがあり、指定されたプログラムでシェルプロセスを上書きする[1]。この機能は、環境変数などを設定して実際のプログラムを実行するラッパースクリプトによく用いられる。exec を使えば、実際に実行したいプログラムが起動した際にシェルが使用していたリソースを解放することができる[2]

プロトタイプ

POSIX標準では unistd.h、DOSやOS/2やWindowsでは process.hexec 関数群が宣言されている。

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 実行中、元のプロセスを破壊し始めてからエラーが発生した場合は、戻るべきプロセスが存在しないためそのプロセス自体を終了させる。

脚注

関連項目

外部リンク


exec

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/12/01 07:13 UTC 版)

Server Side Includes」の記事における「exec」の解説

システムコマンドやCGIプログラム実行し、その出力結果Webページ差し込む

※この「exec」の解説は、「Server Side Includes」の解説の一部です。
「exec」を含む「Server Side Includes」の記事については、「Server Side Includes」の概要を参照ください。

ウィキペディア小見出し辞書の「exec()」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「exec()」の関連用語

exec()のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



exec()のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのexec (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのServer Side Includes (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS