如何在C中检测运行应用程序的平台

时间:2010-03-30 01:46:39

标签: c platform

我想知道如何检测正在运行程序的平台,我有一个应用程序,需要根据它是在Linux还是Mac机器上转到某个文件夹。

谢谢!

4 个答案:

答案 0 :(得分:2)

您可能需要专门为Mac或Linux编译程序,因此您可以使用某种预处理程序指令。这list of macros可能会有所帮助。

答案 1 :(得分:2)

将来可能会中断,但就目前而言,您可以在两者之间发挥大量文件系统差异。

  • / Applications,/ Developer,/ Library等是特定于mac的。如果你有它们,它看起来像一个mac。
  • / proc,/ home,/ srv和其他特定于Linux的。如果他们在那里,它看起来像一台Linux机器。见full list

如果你将这些路径检查技巧中的几个结合到一个函数中,你可以将自己与任何一个独立于其他技巧的技巧隔离开来。

您可以使用stat。

检查文件夹是否存在
struct stat st;
if(stat("/proc",&st) == 0) {
    printf(" /proc is present: this may be Linux\n");
}

答案 2 :(得分:1)

uname()系统调用会告诉您操作系统的版本

答案 3 :(得分:0)

如果你知道你是Unix,那么运行'uname'会告诉你很多关于系统的信息。如果你需要了解更多。当然,这依赖于外部可执行文件。

你应该检查环境变量,但我不确定是哪些。