• ベストアンサー

fork1()とfork()の違い

SolarisをターゲットとするC言語の開発をしなくてはいけなくなりました。 ところが、Solaris環境がないためとりあえずCygwinで開発を行っています。 そこで、まず既存の部分を動作させたいのですが、子プロセスの生成にfork1()を使用していてコンパイルエラーになります。 このfork1()とfork()の違いがわかるかたいたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

手元の Solaris 8 のマニュアルを読んでみたところ Solaris のスレッドには Solarisモデルと POSIXモデルがあるということで, ・pthread をリンクすると POSIXモデルになる. このときには fork を使う ・thread をリンクすると Solarisモデルになる. このときには fork1 を使う ようです. まあ pthread をリンクして fork を使うことにした方が安全じゃないでしょうか. ちなみに POSIXモデルで fork1 を使ったり Solarisモデルで fork を使うこともできます. 子プロセスが exec を呼出すだけなら問題ないようですが, それを超えると子プロセスでデッドロックする可能性もあるとか.

potedora
質問者

お礼

回答ありがとうございます。 とりあえずコンパイルできればいいのでpthreadをリンクしました。 たいへん助かりました。

関連するQ&A