ISO C も POSIX も、実行時に基盤となる OS を判別する機能を提供していません。理論的な観点からは、C は最も一般的なシステム コールのラッパーを提供するため問題ではありません。
ただし、多くの現実世界のシナリオでは、ホスト環境について、C が喜んで共有するよりも多くのことを知ることが役立つことが証明されています。たとえば、構成ファイルを保存する場所や を呼び出す方法を見つけるために、次のようになりますselect()
。
C で記述されたアプリケーションが実行時に基盤となる OS を判別する慣用的な方法はありますか?
少なくとも、Linux、Windows、BSD、および MacOS のどれかを簡単に判断できますか?
C:\
私の現在の推測では、やなどの特定のファイル/ディレクトリの存在を確認することです/
が、このアプローチは信頼できないようです。おそらく、一連のそのようなソースを照会すると、「OS フィンガープリント」の概念を確立するのに役立ち、信頼性が向上します。とにかく、私はあなたの提案を楽しみにしています。