Я использую CentOS и пытаюсь преобразовать Perl-код в C++. в perl мы можем обнаружить операционную систему, используя
$^O or we can print: print "S^O";
o/p: linux
У нас есть функция в C++, которая будет выполнять эту работу. заранее спасибо.
@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;
}
sys/utsname.h
доступен ... зависит от системы.
Существует два общих способа:
OS sniffing через макросы
Например, если WIN32
определен, то вы находитесь в Windows.
Пути поиска заголовков.
Для каждой платформы должна быть создана программа C++. Просто определите пути поиска заголовков, чтобы найти соответствующие версии заголовков для платформы.
Для OS sniffing проверьте список макросов в SourceForge (AFAIK там только один такой проект).
uname
. Существует аналогичный системный вызов для Windows.