0

解析するコマンドを実行する必要がある小さなシェルをコーディングしています。

f は次のような char** です: [ls][-la] p は同じで、次のように使用されます: [wc] そこで、ls -la を wc でパイプしようとしました。私の問題は、パイプでうまく機能する「ls -la | wc && date」を実行すると、ミニシェルが閉じられ、「date」が実行されないことです。待機機能を使用して終了を待ちましたが、何もしません。スタックしているように見え、2 番目の execvp の直後に終了します。

私の配列は NULL で終わります。ls -la | wc はうまく実行されますが、この後 bash に戻ります。execlp と execl を試してみましたが、最初の引数 (ls + -la) のオプションが必要であることを考えると、これは問題ではないと思います。私を手伝ってくれますか ?前もって感謝します :)

4

1 に答える 1

1

すべての形はexec二度と戻りません。現在実行中のイメージを指定された実行可能ファイルに置き換えます。ここでのキーワードは「交換」です。

への呼び出しに続くステートメントexec*が実行される唯一の状況は、execが失敗した場合です (たとえば、実行可能ファイルが見つからない場合)。

于 2013-07-11T03:43:41.307 に答える