Как определить, на какой платформе запущено приложение в C - PullRequest
1 голос
/ 30 марта 2010

Мне было интересно, как вы можете определить, на какой платформе запущена программа, у меня есть приложение, и мне нужно, чтобы оно заходило в определенную папку, в зависимости от того, находится ли оно на компьютере с Linux или Mac.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 30 марта 2010

Это может сломаться в будущем, но сейчас вы можете играть на большом количестве различий между обеими файловыми системами.

  • / Applications, / Developer, / Library и другие специфичны для Mac. Если они у вас есть, это похоже на макинтош.
  • / proc, / home, / srv и другие специфичны для linux. Если они там, это похоже на машину Linux. См. полный список .

Если вы объедините несколько из этих уловок проверки пути в функцию, вы можете изолировать себя от любого из уловок, терпящих неудачу независимо от других.

Вы можете проверить существование папки, используя stat.

struct stat st;
if(stat("/proc",&st) == 0) {
    printf(" /proc is present: this may be Linux\n");
}
2 голосов
/ 30 марта 2010

Возможно, вам потребуется скомпилировать программу специально для Mac или Linux, чтобы вы могли использовать какую-то директиву препроцессора. Этот список макросов может быть полезен.

1 голос
/ 30 марта 2010

Системный вызов uname () расскажет вам о версии ОС

0 голосов
/ 30 марта 2010

Если вы знаете, что вы Unix, запуск 'uname' расскажет вам немного о системе. если вам нужно знать больше. Конечно, это зависит от внешнего исполняемого файла.

Должны быть переменные среды, которые вы можете проверить, но я не уверен, какие из них.

...