タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

linuxとforkに関するembeddedのブックマーク (2)

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

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

    embedded
    embedded 2014/08/21
    なるほどこれは怖い。
  • NetBSD ドキュメンテーション: なぜ伝統的な vfork()を実装したのか

    序 4.4BSDの vfork()/exec() を使った vfork() と COW の処理 アドレス空間共有を用いた 3.0BSD/NetBSD の vfork() の処理 序 (トップ) vfork() は、子プロセスがいずれ他のプログラムを exec()し、 かつ親プロセスはそれが起きるまで待っているという、特別な状況で 用いるために設計されたものです。 伝統的な fork() では、子プロセスに親プロセスの すべてのページを複製するという著しいオーバーヘッドが生じます。 COW (コピーオンライト)が追加された Mach VM システムでは fork() の負荷が大変軽くなり、 BSD 4.4では vfork()は fork() と 同義のものとされました。 NetBSD 1.3 以降では、伝統的な vfork() が再実装されました。 UVMで COW を よりよいものにするた

    embedded
    embedded 2013/03/01
    おそらく同じ理由でLinuxでもvfork(2)が残っていて使われている。
  • 1