run コマンドを使用すると、exec
コマンドの実行が完了した後に親シェルが終了します。実行されたコマンドがexec
正常に実行されたことを確認するには?
ベストアンサー1
'dプログラムをexec
正常に使用した場合exec
変えるあなたの殻。 'dexec
プログラムの終了状態は、シェルを実行する親プロセスに戻されます。
execの終了ステータスを次の行で説明できる唯一の方法は、exec
exec呼び出しが失敗した場合です。通常、要求されたコマンドがない場合、またはファイルを実行できない場合にのみ発生します。オプションの解決問題はexecプログラムの起動後に解決されるため、これには含まれません。
シェルがプログラムの終了コードを解釈できるようにするには、to をexec
使用してこれを行うことはできません。シェルでプログラムを実行すると、完了すると終了ステータスが表示されます。
詳細については、以下を参照してくださいman 3 exec
。この関数またはその姉妹関数の1つは、シェルが呼び出す基本的な低レベルのUnix関数です。
シェルコマンドラインで使用するのが合理的であると考えられる唯一の理由は、exec
シェルで使用するメモリが問題となるメモリが非常に低いシステムや分岐問題があり、幸運にも使用できるシステムにあることです。シェルは新しいプロセスを分岐できず、問題を解決するには新しいプロセスが1つだけ必要です。
たとえば、execの一般的な使用はシェルスクリプトで行われます。
(@ chicksに感謝します。)アプリケーションが終了すると、ログインスクリプトで信頼性の低いユーザーにコンソールを委任すると、ユーザーはシェルを制御できません。
exec'dプログラムの前提条件(環境、ulimit)のみを設定するシェルスクリプトでは、exec'dプログラムの戻りコードがスクリプトを呼び出す人に直接返されることを望みます。実行中のプロセスのPIDは同じであるため、スクリプトはプロセスを記録できます。