問題タブ [wexitstatus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 正しい戻りコードではなく、waitpid/wexitstatus が 0 を返す
以下のヘルパー関数を使用して、コマンドを実行し、posix システムで戻り値を取得します。以前は を使用していましたが、アプリケーションを実行して終了する前にpopen
アプリケーションのリターン コードを取得することは不可能でした。popen
popen
pclose
次のヘルパー関数は、プロセス フォークを作成しexecvp
、目的の外部プロセスを実行するために使用し、次に、親waitpid
がリターン コードを取得するために使用します。実行を拒否する奇妙なケースが見られます。
wait
=true
で呼び出された場合waitpid
、何があってもアプリケーションの終了コードを返す必要があります。ただし、stdout
戻りコードがゼロ以外である必要があることを指定する出力が表示されますが、戻りコードはゼロです。通常のシェルで外部プロセスをテストすると、echo
ing$?
はゼロ以外を返すため、外部プロセスが正しいコードを返さないという問題はありません。それが助けになる場合、実行されている外部プロセスは次のとおりですmount(8)
(はい、使用できることはわかっていますmount(2)
が、それは重要ではありません)。
コードダンプについては事前にお詫び申し上げます。そのほとんどはデバッグ/ロギングです:
コマンドは正しいパラメーターで正常に実行され、関数は問題なく続行され、WIFEXITED
が返されることに注意してくださいTRUE
。ただし、WEXITSTATUS
何か他のものを返す必要がある場合は、0 を返します。
c - エラー状態の正しい WEXITSTATUS を返すための waitpid() を取得できません
コマンドラインで実行するとエラーが返されるコマンドといくつかの入力があり、関連するエラーコードは 1 です。
私はこのエラーコードをキャッチしようとしていますwaitpid()
:
私のスレッドは、処理するperform_foo_function()
ものがなくなるbar_data
まで、またはデータのエラーが原因でプロセスが失敗するまで実行されます。
私の質問は、このプロセスのエラーステータスをキャッチする方法ですか? デバッグの過程で、WEXITSTATUS
意図的にエラー状況を作成するか、正当な入力を提供するかにかかわらず、 は常にゼロです。
関連するステータス コード チェックについて何を誤解してwaitpid()
いますか? また、これを機能させるにはどのような変更を加える必要がありますか?
ファローアップ
次のコードは、ブロックせずに機能するようです。
このステップでプロセスがすでに終了しているため、 「チェック後」のwaitpid()
呼び出しはハングしないと思います。
c - c whileループのfork()とwait()?
私はCでこの小さなプログラムを持っていて、それがどのように機能するかを理解しようとしています。これは、コマンドラインで数行を使用fork()
しwait()
て出力する単純なwhileループです。私が思うことをできる限りコメントしましたハプニング
このプログラムは、次のように出力することになっています。
子プロセスの1つが戻るi
と、親プロセスはそれを待ち&j
ますか? これは本当に私を混乱させます。どんな助けでも大歓迎です。