stikriz11 писал(а):Неужели что-то подобное обязательно надо вытворять в Linux регулярно?
Нет. Таким заниматься не нужно. Обрабатывать напрямую аппаратные прерываниями из пользовательского режима вам никто не позволит.
Но вот в Windows тоже есть прерывание для доступа к ядру. Кажется int 49 (уже не помню и могу напутать). Вот только интерфейс этого прерывания не документирован. Документированы только API функции из DLL.
Вот эти ваши ощущения, что должно быть 100500 различных документированных функций связанных с ОС как раз идет из Windows. Там вам не дают свободы выбора. Есть только официальный оконный менеджер и официальная структура программного интерфейса.
Linux же максимально простая в этом плане ОС. Все что вам нужно реализовано на уровне ядра и чисто ядро работает только как управляющий код и средство взаимодействия пользовательских процессов. Для этого не надо много функций. Все они реализуются в системных вызовах.
Но вот остальные функции это уже целиком и полностью часть соответствующих пакетов расширения. Например, для графического интерфейса (X11) запускается пользовательский процесс отвечающий за создание и управление окнами. Функции взаимодействия с этим процессом реализованы уже в его .so библиотеке и документированы для неё. Но вместе с этим процессом есть так же процесс - оконный менеджер (GNOME, KDE, xfce, mate итд), который так же привносит свои дополнительные функции для управления окнами (темы, рабочий стол и настройки).
То что вы привыкли считать единым в Windows в Linux разбито на несколько независимых частей.
ADD: Т.е. то, что вы привыкли видеть как функции библиотеки GDI32.DLL, в Linux это X11. А функции библиотеки USER32.DLL это функции оконного менеджера. Системные вызовы же это часть относящаяся к функциям KERNEL32.DLL. Если совсем упростить и приблизительно попробовать сопоставить.
stikriz11 писал(а):Вы сами этот файл видели?
Я же уже объяснил кто такое системный вызов. Для него не надо ничего кроме набора соответствующих констант. Этот файл вполне полный.
sts писал(а):кажется я понял, вы просто приписываете функции GetEnvironmentVariable свойства которыми она по вашему мнению должна обладать, просто потому что дословно читаете ее название
Посмотрите на скриншоты в предыдущих постах. Я вам там уже все пояснил. И даже рассказал про особенности environ связанные с их расположением.
А применительно к передаче параметра HOSTNAME через переменные окружения - это не подходит т.к. пользователь может изменить hostname через вызов соответствующего системного вызова в одном из пользовательских процессов. А программа использующая копию этого значения в переменных окружения этого не увидит и продолжит работать со старым значением. И пользователь будет долго тупить почему он имя поменял, а в вашей программе оно все равно старое. И даже перезапуск не помогает, потому что надо не просто перезапустить ваш программу, но и оболочки из которой она запускается.
Снег Север писал(а):Только у вирусописателей.
А ещё у безопасников и антивирусописателей. Ещё у разработчиков оборудования и всяких разных сервисов, которые должны работать, скажем, с RAID массивами или другой функцией, о которой Windows ничего не известно.
Разумеется скриптописателям на html максимум что нужно это WinAPI.