1

私は私のプログラムでこれを持っています:

 execv (programname, (char **)argv);

コマンドが実際に正しく実行されているかどうかはわかりません。どうすればわかりますか?これはバックグラウンドで実行されていますか?

4

4 に答える 4

4

あなたがやろうとしている仕事に関連する本を入手することを強くお勧めします。途中でSOについて新しい質問をすると、本当に長い道のりになります。私たちは喜んでお手伝いしますが、本の方が優れている場合もあります。

Advanced UNIX Programmingは、パイプラインを含むシェルの完全なサンプルを含む優れたものです。実際、サンプル プログラムは無料でダウンロードできます (ただし、とにかく本を入手することをお勧めします)。

于 2011-04-27T01:33:30.260 に答える
2

execv は現在のプロセスを置き換えるため、コマンドは親プロセスと同じ状態で実行されます。

コマンドが実行されたかどうかを知る 1 つの方法は、可能であれば、コマンドがコンソールに何かを出力するようにすることです。

于 2011-04-27T01:28:57.363 に答える
1

execv() は、現在のプロセスを「programname」でオーバーレイすることになっていると思います。別のプロセスでプログラムを実行したい場合は、 fork() または system() が必要です-後者が「標準」であるとは思いませんが、かなり遍在しているようです.

于 2011-04-27T01:29:48.673 に答える
1

execv の man ページから。

戻り値 exec() 関数のいずれかが戻る場合、エラーが発生しています。戻り値は -1 で、エラーを示すために errno が設定されます。

したがって、戻り値を取得した場合は、何か問題が発生しています。

于 2011-04-27T01:56:30.667 に答える