Как искать API в Linux

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Как искать API в Linux

Сообщение stikriz11 »

Добрый день!

Возникла потребность узнать в программе под Linux имя компьютера.
И таких вопросов, наверное, скоро будет очень много. Отсюда вопрос общего характера.
Если мне надо узнать имя компьютера под Windows, я обращаюсь к справочнику API. Есть много таких справочников и от самой Microsoft и в переводе, и сокращенные - только часто необходимое, можно искать, можно читать все подряд.

Как поступают разработчики Linux в таком случае? Есть где-то в открытом доступе некий справочник, где можно узнать как вызвать нечто в ядре (или где?) и получить желаемое, например, имя компьютера. В общем, мне нужен аналог API как в Windows.

Про имя компьютера.
Хотелось бы понять, это вообще можно получить вызовом? Это надо искать какой-то файл? Это только и исключительно в консоли можно получить, и больше никак? Это страшный секрет (невозможно найти в интернет - все ссылаются на сторонние библиотеки или консоль, но они же как-то это подучают)?

И самый неприятный вопрос. Мне придется изучать исходники Linux, чтобы узнать как вызовом некой функции узнать имя компьютера, и подобные вещи?
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

Сообщение DedFrend »

А вы Линукс хоть видели? Имя компьютера обычно фигурирует в приглашении $ , По поводу вызовов api есть команда man (от слова manual)
stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Сообщение stikriz11 »

DedFrend писал(а):А вы Линукс хоть видели? Имя компьютера обычно фигурирует в приглашении $ , По поводу вызовов api есть команда man (от слова manual)
Видел.
Что мне это дает? Мне нужно получить имя компьютера в программе, а не посмотреть в терминале.
Зачем мне команды консоли?

Вы не программист, видимо?
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

все есть в командах man. просто попробуйте например man connect или man printf
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

stikriz11 писал(а):
DedFrend писал(а):А вы Линукс хоть видели? Имя компьютера обычно фигурирует в приглашении $ , По поводу вызовов api есть команда man (от слова manual)
Видел.
Что мне это дает? Мне нужно получить имя компьютера в программе, а не посмотреть в терминале.
Зачем мне команды консоли?

Вы не программист, видимо?
Собственно смысл того, что он сказал в том, что принцип работы с программами через CLI (интерфейс командной строки) универсален и сработает как при работе с консолью человека, так и при использовании во внешней программе, даже если не предусмотрено какого-либо особого API данной программой
stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Сообщение stikriz11 »

Да, что-то есть, спасибо. Я так понял, что hostname - только в файле.
Вот эти файлы с настройками, они в разных linux везде всегда в одних и тех же каталогах рассыпаны? Можно надеяться, что это так?
Еще бы заголовочные файлы сишные на паскаль переведенные...

Добавлено спустя 1 минуту 11 секунд:
stikriz11 писал(а):Да, что-то есть, спасибо. Я так понял, что hostname - только в файле.
Вот эти файлы с настройками, они в разных linux везде всегда в одних и тех же каталогах рассыпаны? Можно надеяться, что это так?
Еще бы заголовочные файлы сишные на паскаль переведенные...
Не, такой глупостью хотелось бы не заниматься.
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Сообщение wwswowsogon »

stikriz11 писал(а): Можно надеяться, что это так?
Нет. :) В разных дистрибутивах многие конфиги в разных местах, увы.
stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Сообщение stikriz11 »

Думаю, тогда должен быть конфиг, в котором пути ко всем конфигам, и еще один конфиг, в котором путь к этому конфигу.
Seenkao
энтузиаст
Сообщения: 568
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

https://chromium.googlesource.com/chrom ... yscalls.md - системные вызовы для разных архитектур.
Определяем версию ОС в C++, на паскале то же самое.
stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Сообщение stikriz11 »

Если кому интересно, нашел synsock.GetHostName() в компонентах synapse. Реализация в Linux через модуль unit, а в винде - там вызов dll. Я как раз этим сокетом и пользуюсь.

Добавлено спустя 10 минут 55 секунд:
Думаю, алгоритм должен быть такой:
1. Где-то надо узнать точное имя функции. Скорее всего, на форумах про консоль.
2. В консоли пишем man [имя_нашей_функции] - читаем справку с того места, где и если есть include.
3. Начинаем беспорядочный поиск чего-то подобного в исходниках FPC и сторонних компонентов. Если нашли - готово.
4. Если не нашли, углубляемся в исходники сишной библиотеки. Вот, еще надо компилятор поставить.
RRYTY
постоялец
Сообщения: 253
Зарегистрирован: 25.12.2021 09:00:32

Сообщение RRYTY »

stikriz11 писал(а):Думаю, тогда должен быть конфиг, в котором пути ко всем конфигам, и еще один конфиг, в котором путь к этому конфигу.
Читать документацию - единственный реальный путь к освоению Linux. Гадать и предполагать бессмысленно, метод "научного тыка" в Linux потребует несопоставимых, с ценностью результата, ресурсов.
stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Сообщение stikriz11 »

RRYTY писал(а):Читать документацию
Ссылку дадите?
RRYTY
постоялец
Сообщения: 253
Зарегистрирован: 25.12.2021 09:00:32

Сообщение RRYTY »

Да запросто. Видимо, спутали google.com с freepascal.ru.

https://www.opennet.ru/docs/132.shtml
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

"Документация Линукс" рассчитана исключительно на красноглазиков-консольщиков, а не на нормальных программистов. Имел печальный опыт убедиться.
RRYTY
постоялец
Сообщения: 253
Зарегистрирован: 25.12.2021 09:00:32

Сообщение RRYTY »

Снег Север писал(а):Имел печальный опыт убедиться.
Искренне сочувствую. Но другого пути нет. И не будет. :(
Ответить