タグ

forkに関するMonMonMonのブックマーク (3)

  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

  • monit 5.4 のバグ - マルチスレッドでfork(2)してデッドロック - hibomaの日記

    プロダクション環境で使用していた monit 5.4 がデッドロックを起こしていたので調査をしていました。なお、エントリで記述されているバグは monit 5.5 で修正されています 要約 長い内容なので最初にまとめておくと monit はマルチスレッドアプリケーションである monit 5.4 には fork(2) 後に localtime_r(3) を呼び出す処理があり、これらが稀にデッドロックを引き起こす monit 5.5 系では fork(2) 前に 変更された。 /usr/bin/gstack は便利ツール マルチスレッド + fork(2) でデッドロックするパターンに要要注意 これらの内容に興味がある方は読み進めていただければ ... 問題になった monit プロセスの運用について 該当の monit は 定期的に監視プロセスを再起動する役割で使われています。再起動をす

    monit 5.4 のバグ - マルチスレッドでfork(2)してデッドロック - hibomaの日記
  • プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。

    プロセス置き換えとか、名前付きパイプとか、とても便利な機能なのだけど、その仕組みはどうなっているのだろう?断片的な知識ばかりでは、その核心にはなかなか辿り着けない。サンプルコードの真似はできるけど、それ以上の発想はできない...。もっと根的なところからちゃんと理解しておかないと、いつまでたってもコマンドの使い方の質が理解できないと感じた。プロセスとは何か?パイプとは何か?リダイレクションとは何か?ファイルディスクリプタとは何か?可能な限りその質を探ってみようと思う。 UNIXのプロセス UNIXでは、複数のユーザーがログインした状態で、同時に複数の処理を依頼される状況が多々ある。 ところが、どんなに高性能なCPUであっても、ある瞬間に処理できるのはたった1つの処理だけである。 そんな時OSは、それぞれの処理に必要なメモリ領域を割り当てて、CPUをタイミングよく切り替えながら同時並行的

    プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。
  • 1