問題タブ [waitpid]

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.

0 投票する
3 に答える
13995 参照

c - child で使用される execl での waitpid は、ECHILD で -1 を返しますか?

完了するまでに時間がかかる可能性がある子プロセスでwaitpid使用している場合、いつ使用する必要がありますか?execl

親で使用するwaitpidと、からの戻り値waitpidが0であるため、子が実行されていることがわかります。ただし、waitpidしばらくして別の関数で呼び出すと、 errnoset toで-1が返されますECHILDwaitpid子供が完了したかどうかわからない場合は、いつ使用すればよいですか?

0 投票する
3 に答える
5806 参照

linux - Linux、waitpid、WNOHANG、子プロセス、ゾンビ

プログラムをデーモンとして実行しています。

親プロセスは子プロセスだけを待ちます。子プロセスが予期せず停止した場合は、分岐して再度待ちます。

ただし、子プロセスが -9 シグナルで強制終了されると、子プロセスはゾンビ プロセスになります。

waitpid子プロセスの pid をすぐに返す必要があります。
しかしwaitpid、約90秒後にpid番号を取得し、

父の軌跡はこちら

父は引っかからず、常にwait4が呼び出されました。

約 90 秒後、父は SIGCHILD を受け取り、wait4 は死んだ子供の pid を返しました。

子プロセスがすぐに終了しないのはなぜですか? それどころか、思わずゾンビ化。

0 投票する
1 に答える
2553 参照

c - waitpid/wait/waitid のどれを選択しますか?

forkした後、子プロセスでexeclを使いたいです。execl はスクリプトを実行しますが、これには約 120 秒かかります。異なる引数 (0、WNOHANG など) を使用して、waitpid、wait、および waitid のほとんどすべての組み合わせを試しましたが、すべての場合で戻り値が -1 になります。だから私はいつ使用する必要がある待機関数を知りたいですか? そのため、1 つの待機関数に集中して機能させることができます。

ログから観察したもう 1 つの興味深い点は、子プロセスで何もしていないときに、親スレッドが孤立していると表示されることです。私はそれがどのように可能かわかりませんか?親スレッドが孤立するのはどうしてですか?

0 投票する
0 に答える
905 参照

c - waitpid の後に strerror(errno) が使用されます。strerror の結果として何が期待されますか?

strerror(errno) で試してみましたが、waitpid の結果文字列を取得しました。
両方の状態でステータス文字列を確認しました:

strerror から以下のプリントを取得しました。

子供が走っている間:

子供の解雇:

waitpid の後の strerror(errno) からの予期される結果文字列は何になるはずです。「子プロセスなし」とはどういう意味ですか?子が正常に終了/終了した場合、それは有効な文字列ですか? 子が実行中/子が終了した場合、waitpidからの戻り値は何を期待する必要がありますか?

ここで私の場合、strerror は次のように返します。

使用したコード:

O/P:

スリープなしの O/P:

0 投票する
0 に答える
128 参照

c++ - waitpid の早期呼び出しで終了ステータスが正しく収集されない


次のコードを使用してプロセスをフォークし、後で停止するように通知しています。

このコードは (予想どおり) 次のように出力
します。
採寸して終了。
測定プロセスは 42 を返しました。

ただし、kill ステートメントの後に sleep ステートメントを省略すると、代わりに次のようになり
ます。
測定プロセスは信号 80 で終了しました
。測定は終了しました。

3 秒待つかどうかによって結果が異なるのはなぜですか? 子供が戻ってくるまで待つべきではありませんか? これは私のアプリケーションでは (現時点では) あまり重要ではありませんが、正しく行う方法を理解したいと思います。子プロセスに停止するように通知し、「適切に」終了するまで待ちたいと思います。

助けてくれてありがとう、
ルッツ