Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Операционные системы общие вопросы
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2024, 19:31   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию Определить текущую ОС

Доброго дня!

В свете импортозамещения пересаживаемся на Linux. Но код нужен системо-независимый, от чего нужно знать в какой именно ОС он был запушен. Пишем на Lua, но думаю это не суть.
Встроенной функции нет.

Нашёл следующее. В Винде есть переменная окружения "OS" которая должна содержать тип ОС.
В разных местах написано, что "в Windows XP и Windows 2000 будет равно Windows_NT".
Проверил у себя на Windows 10, возвращает "Windows_NT". Проверил на Linux ALT, не такой переменной - то есть nil.

Можно ли ожидать, что в Windows независимо от версии (включая серверные) будет возвращаться "Windows_NT", а в любой версии Linux будет возвращаться пустое значение?

Если нет, то как лучше поступать?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 21.08.2024, 20:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,759
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Можно ли ожидать, что в Windows независимо от версии (включая серверные) будет возвращаться "Windows_NT"
На всех https://en.wikipedia.org/wiki/Windows_NT там NT

Цитата:
Сообщение от tae1980 Посмотреть сообщение
а в любой версии Linux будет возвращаться пустое значение?
Это ж переменная окружения. Можно установить во что угодно.

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Если нет, то как лучше поступать?
Есть стандартный путь: пробуем вызвать uname, если вызвалось - парсим, если нет - пробуем OS или ver.
p51x вне форума Ответить с цитированием
Старый 22.08.2024, 04:30   #3
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,830
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Пишем на Lua, но думаю это не суть.
Суть.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 22.08.2024, 13:17   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Нашёл вот такой вариант для Lua, работает. Может кому ещё пригодится
Код:
function os.name()
--Версия 1.0.0 от 22.08.2024
--Определение тип текущей ОС
--
--На выходе:
--Возвращает WINDOWS/LINUX/MACOS в зависимоти от типа текущей OS.
--
    local BinaryFormat = package.cpath:match('%p[\\|/]?%p(%a+)')
    if BinaryFormat == 'dll' then
        BinaryFormat='WINDOWS';
    elseif BinaryFormat == 'so' then
        BinaryFormat='LINUX';       
    elseif BinaryFormat == 'dylib' then
        BinaryFormat='MACOS';
    else
        BinaryFormat=nil;
    end; -- if 
    return BinaryFormat;
end; -- function
С уважением, Алексей.

Последний раз редактировалось tae1980; 22.08.2024 в 13:20.
tae1980 вне форума Ответить с цитированием
Старый 03.09.2024, 14:32   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,646
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
В свете импортозамещения пересаживаемся на Linux
А еще в качестве импортозамещения многие компании переходят на китайскую продукцию
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить текущую позицию в файле? taras-proger77 Win Api 4 23.04.2019 11:30
Как определить текущую скорость Ethernet сети (реальную) calypso Win Api 40 18.11.2015 21:57
Как определить текущую строку StringGrid Veiron Общие вопросы Delphi 2 24.09.2009 03:03
Как сохранить текущую игру ? INCIC Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 29.06.2009 21:20
Определить текущую ячейку на листе НикНик Microsoft Office Excel 5 18.08.2008 09:40