ISO CもPOSIXも、実行時に基礎となるOSを決定する機能を提供していません。理論的な観点からは、Cは最も一般的なシステムコール用のラッパーを提供しており、ニッチピッキングの観点からはになる必要はありません。 OSです。実行時にOSを決定する
しかし、多くの現実のシナリオでは、Cが共有しようとしているホスト環境よりも多くのことをホスト環境について知ることが有益であることが証明されています。設定ファイルをどこに保存するか、またはselect()
を呼び出す方法を知るためには、
実行時に基礎となるOSを判断するためにC言語で書かれたアプリケーションの慣用方法がありますか?
少なくとも、Linux、Windows、BSD、MacOSのどちらを簡単に決定できますか?
私の現在の推測は、C:\
や/
などの特定のファイル/ディレクトリの存在を確認することですが、この方法は信頼性が低いようです。たぶん一連のそのようなソースを照会することは、「OSフィンガープリント」という概念を確立するのに役立ち、信頼性を向上させる可能性があります。とにかく、私はあなたの提案を楽しみにしています。
のEr、あなたはコンパイル時にこの情報を知っているあなたは*実行*ヘルプでOSを決定どのよう –
'select()'コールを正しく書くか? –
+1、@David。少なくともLinuxとWindows、Mac OS Xなどの違いについては、私はランタイムの方法でそれぞれのバージョンの違いを区別する必要があると思いますが、OPが探しているものかもしれませんが、その答えはそれぞれに固有のものですオペレーティングシステム、おそらく。 –