ISO C 和 POSIX 都不提供在运行时确定底层操作系统的功能。从理论的角度来看,这并不重要,因为 C 为最常见的系统调用提供了包装器,并且从挑剔的角度来看,甚至不必有底层操作系统。
然而,在许多现实世界的场景中,比 C 愿意分享的更多地了解主机环境已被证明是有帮助的,例如,为了找出存储配置文件的位置或如何调用select()
,所以:
用 C 编写的应用程序是否有一种惯用的方式来确定运行时的底层操作系统?
至少,我可以轻松地在 Linux、Windows、BSD 和 MacOS 之间做出选择吗?
我目前的猜测是检查某些文件/目录是否存在,例如C:\
or /
,但这种方法似乎不可靠。也许查询一系列此类来源可能有助于建立“操作系统指纹”的概念,从而提高可靠性。无论如何,我期待着你的建议。