問題タブ [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.
c - child で使用される execl での waitpid は、ECHILD で -1 を返しますか?
完了するまでに時間がかかる可能性がある子プロセスでwaitpid
使用している場合、いつ使用する必要がありますか?execl
親で使用するwaitpid
と、からの戻り値waitpid
が0であるため、子が実行されていることがわかります。ただし、waitpid
しばらくして別の関数で呼び出すと、 errno
set toで-1が返されますECHILD
。waitpid
子供が完了したかどうかわからない場合は、いつ使用すればよいですか?
linux - Linux、waitpid、WNOHANG、子プロセス、ゾンビ
プログラムをデーモンとして実行しています。
親プロセスは子プロセスだけを待ちます。子プロセスが予期せず停止した場合は、分岐して再度待ちます。
ただし、子プロセスが -9 シグナルで強制終了されると、子プロセスはゾンビ プロセスになります。
waitpid
子プロセスの pid をすぐに返す必要があります。
しかしwaitpid
、約90秒後にpid番号を取得し、
父の軌跡はこちら
父は引っかからず、常にwait4が呼び出されました。
約 90 秒後、父は SIGCHILD を受け取り、wait4 は死んだ子供の pid を返しました。
子プロセスがすぐに終了しないのはなぜですか? それどころか、思わずゾンビ化。
c - waitpid/wait/waitid のどれを選択しますか?
forkした後、子プロセスでexeclを使いたいです。execl はスクリプトを実行しますが、これには約 120 秒かかります。異なる引数 (0、WNOHANG など) を使用して、waitpid、wait、および waitid のほとんどすべての組み合わせを試しましたが、すべての場合で戻り値が -1 になります。だから私はいつ使用する必要がある待機関数を知りたいですか? そのため、1 つの待機関数に集中して機能させることができます。
ログから観察したもう 1 つの興味深い点は、子プロセスで何もしていないときに、親スレッドが孤立していると表示されることです。私はそれがどのように可能かわかりませんか?親スレッドが孤立するのはどうしてですか?
c - waitpid の後に strerror(errno) が使用されます。strerror の結果として何が期待されますか?
strerror(errno) で試してみましたが、waitpid の結果文字列を取得しました。
両方の状態でステータス文字列を確認しました:
strerror から以下のプリントを取得しました。
子供が走っている間:
子供の解雇:
waitpid の後の strerror(errno) からの予期される結果文字列は何になるはずです。「子プロセスなし」とはどういう意味ですか?子が正常に終了/終了した場合、それは有効な文字列ですか? 子が実行中/子が終了した場合、waitpidからの戻り値は何を期待する必要がありますか?
ここで私の場合、strerror は次のように返します。
使用したコード:
O/P:
スリープなしの O/P:
c++ - waitpid の早期呼び出しで終了ステータスが正しく収集されない
次のコードを使用してプロセスをフォークし、後で停止するように通知しています。
このコードは (予想どおり) 次のように出力
します。
採寸して終了。
測定プロセスは 42 を返しました。
ただし、kill ステートメントの後に sleep ステートメントを省略すると、代わりに次のようになり
ます。
測定プロセスは信号 80 で終了しました
。測定は終了しました。
3 秒待つかどうかによって結果が異なるのはなぜですか? 子供が戻ってくるまで待つべきではありませんか? これは私のアプリケーションでは (現時点では) あまり重要ではありませんが、正しく行う方法を理解したいと思います。子プロセスに停止するように通知し、「適切に」終了するまで待ちたいと思います。
助けてくれてありがとう、
ルッツ