1.execとは
コマンド「exec」でスクリプトやコマンド・関数を実行すると、親プロセス自体が別のプロセスに置き換わってから指定したスクリプト等が実行される。
通常は、それぞれのスクリプト等は親プロセスが子プロセスを作って、子プロセス内で動作させるが、コマンド「exec」で指定すると親プロセス自体が別プロセスに変わる。下記のコードを例にすると1回目のコマンド「echo」を別プロセスで実行したため、元の親プロセスは存在しなくなり、2回目のコマンド「echo」は元の親プロセス内で動作する予定だったが無くなってしまったため動作しなくなる。
例)
exec echo 1
echo 2 #←元の親プロセスがないため実行されない。
2.用途
- プロセスの置き換えによる効率化
通常は子プロセスを作るため、複数のプロセスが発生するが、execは一つのプロセス内で置き換えて実行するため動作が軽く効率的。【書式】exec コマンド - ログ出力の変更
最初にexecで標準出力先を指定するとその後のログ出力が全て、指定した出力先になる。この方法はプロセスの置き換えが発生せず、単に出力先を置き換えているだけのため、execの後のコマンドも実行できる。