1

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

谢谢!

4

4 回答 4

2

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

于 2010-03-30T01:58:14.067 回答
2

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

  • /Applications、/Developer、/Library 和其他都是 mac 特定的。如果你有它们,它看起来就像一个mac。
  • /proc、/home、/srv 和其他是 linux 特定的。如果它们在那里,它看起来就像一台 linux 机器。查看完整列表

如果您将这些路径检查技巧中的几个组合到一个函数中,您可以将自己与任何一个独立失败的技巧隔离开来。

您可以使用 stat 检查文件夹是否存在。

struct stat st;
if(stat("/proc",&st) == 0) {
    printf(" /proc is present: this may be Linux\n");
}
于 2010-03-30T03:13:55.807 回答
1

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

于 2010-03-30T02:01:18.413 回答
0

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

您应该可以检查环境变量,但我不确定哪些。

于 2010-03-30T01:54:26.573 回答