Можно ли обнаружить операционную систему в C ++?

0

Я использую CentOS и пытаюсь преобразовать Perl-код в C++. в perl мы можем обнаружить операционную систему, используя

$^O or we can print: print "S^O";
o/p: linux

У нас есть функция в C++, которая будет выполнять эту работу. заранее спасибо.

  • 0
    Проблема в том, что знакомство с именем операционной системы зависит от операционной системы. В системах POSIX (например, OSX или Linux) вы можете использовать системный вызов uname . Существует аналогичный системный вызов для Windows.
  • 1
    Вы хотите обнаружить ОС во время компиляции или во время выполнения?
Показать ещё 1 комментарий
Теги:
operating-system

2 ответа

0
Лучший ответ

@Joachim Pileborg Спасибо за предложение... за uname системный вызов... из следующего кода я могу получить системную информацию.

 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <sys/utsname.h>

int main(void) {

 struct utsname buffer;

 errno = 0;
 if (uname(&buffer) != 0) {
  perror("uname");
  exit(EXIT_FAILURE);
}

 printf("system name = %s\n", buffer.sysname);
 printf("node name   = %s\n", buffer.nodename);
 printf("release     = %s\n", buffer.release);
 printf("version     = %s\n", buffer.version);
 printf("machine     = %s\n", buffer.machine);

 return EXIT_SUCCESS;
}
  • 1
    Будет ли sys/utsname.h доступен ... зависит от системы.
  • 0
    @mob: спасибо за информацию .. она доступна в моей системе
Показать ещё 1 комментарий
0

Существует два общих способа:

  • OS sniffing через макросы
    Например, если WIN32 определен, то вы находитесь в Windows.

  • Пути поиска заголовков.
    Для каждой платформы должна быть создана программа C++. Просто определите пути поиска заголовков, чтобы найти соответствующие версии заголовков для платформы.

Для OS sniffing проверьте список макросов в SourceForge (AFAIK там только один такой проект).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню