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

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

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

Ответить
Seenkao
энтузиаст
Сообщения: 569
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

Снег Север писал(а):Я так и знал, что вам нечего сказать.
*facepalm*
просто оставлю здесь... и это только вершина айсберга.
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 564
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Снег Север писал(а):Я так и знал, что вам нечего сказать.
А что тут скажешь то? Вы же оперируете общими словами, типа "всё, без исключений". Хотя бы пример привели из этого "всё".
Аватара пользователя
Pavia
постоялец
Сообщения: 290
Зарегистрирован: 07.01.2011 11:46:51

Сообщение Pavia »

Аналогом win api в линуксе является posix API
Аналогом msdn является manpages
Доступны как офлайн командой man так и онлайн.
https://linux.die.net/man/
https://www.opennet.ru/man.shtml
Третья секция как раз описание функций.
Перевод доступен тут:
https://sourceforge.net/projects/man-pages-ru/
Исходники лежат на kernal.org а обсуждение идет через рассылку.

Добавлено спустя 11 минут 29 секунд:
sts писал(а):ахаха
Так с какого XP тормозит в два раза больше, чем Win98, а Vista — в три раза тормознее, чем XP
по объективными причинам, также как и win7 в два раза тормознее, чем XP

Добавлено спустя 22 минуты 11 секунд:
походу это стеб
Чем больше сервисов тем тормознутее система. Так что неудевлюсь что не в 2 а более раз. Я просто ставил xp там всё летает.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

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

Насчет того, какая винда тормознутая - это очередной бред красноглазиков. Мне по работе доводилось переводить десятки офисных компов с ХР на семерку и десятку, могу абсолютно авторитетно заявить, что в 100% случаев ранее еле ползавший комп начинал после обновления летать.
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

Снег Север писал(а):Мне по работе доводилось переводить десятки офисных компов с ХР на семерку и десятку, могу абсолютно авторитетно заявить, что в 100% случаев ранее еле ползавший комп начинал после обновления летать.
крайне сомнительно. десятке нужен ссд и минимум 4 гига памяти, во времена хр такой комп был крайне редок, значит комп апгредили что делает сравнение бессмысленным

Добавлено спустя 22 минуты 1 секунду:
Pavia писал(а):Чем больше сервисов тем тормознутее система. Так что неудевлюсь что не в 2 а более раз. Я просто ставил xp там всё летает.
коротко
отличие XP от Win98
ядро NT, это
изоляция кернел\юзерспейс,
проверка прав доступа
т.е. + 2 уровня абстракций, если по простому - вместо одного вызова функции в Win98 в XP делается три (одно со сменой контекста), при этом проверка прав очень дорогая.
отличие Vista от XP
DWM,
DRM
+ 2 уровня абстракций, DWM то что в линухе в народе называют компиз, композитный менеджер окон, крайне резко повышает потребление памяти, для каждого окна создает буфер в который осуществляется отрисовка а потом делает композицию из этих буферов, для этого естественно надо перехватывать команды отрисовки, поддержка DRM, программа открывает видео файл, передает поток в декодер, декодер передает в видеокарту, видео карта передает на монитор, на каждом этапе, на системном уровне, проверяется лицензия (цифровая подпись), как пример, планировалось в кабель hdmi (к монитору) чипы ставить чтобы по нему нельзя было передавать не лицензионный контент (часть стандарта hdmi), крайне тормознутая вещь.
отличие Win7 от Vista
убрали DRM
stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Сообщение stikriz11 »

WAYFARER писал(а):Рекомендую книгу Майкла Керриска "Linux API. Исчерпывающее руководство".
Я скачал её и там нет как получить имя компа))) Не совсем исчерпывающее. Но, там есть немного, конечно. Не хочется даже думать, что вот это немного - это все, что в Linux есть... Хотя, может, у меня урезанная версия книги. Я же качал непонятно где.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

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

"Пилите, Шура, пилите! Они золотые!" (С)
xchgeaxeax
постоялец
Сообщения: 200
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

stikriz11 писал(а):Я скачал её и там нет как получить имя компа))) Не совсем исчерпывающее. Но, там есть немного, конечно. Не хочется даже думать, что вот это немного - это все, что в Linux есть... Хотя, может, у меня урезанная версия книги. Я же качал непонятно где.
Не знаю где вы искали, но посмотрите в районе 265 страницы. Имя компьютера там запихнули не в сетевые сокеты, а в информацию о системе.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Возникла потребность узнать в программе под Linux имя компьютера.

Код: Выделить всё

program n;
{$MODE OBJFPC}
{$H+}
uses baseunix;

var
u : UtsName;
begin
fpUName (u);
WriteLn(u.Sysname);
WriteLn(u.Nodename);
WriteLn(u.Release);
WriteLn(u.Version);
WriteLn(u.Machine);
WriteLn(u.Domain);
end.
Добавлено спустя 1 час 7 минут 14 секунд:
Как поступают разработчики Linux в таком случае? Есть где-то в открытом доступе некий справочник, где можно узнать как вызвать нечто в ядре (или где?)
1. https://www.gnu.org/
2. https://www.ibm.com/linux
3. https://www.kernel.org/
4. https://unix.stackexchange.com
5. https://stackoverflow.com
6. https://www.google.ru
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 564
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

stikriz11 писал(а):Я скачал её и там нет как получить имя компа)
Глава 12. Там все есть.
Но книгу не надо использовать в качестве справочника. Ее надо прочитать. Что бы пользоваться документацией надо знать что искать.

Пример, как получить имя компьютера:

Код: Выделить всё

uses unix;

begin
	writeln(GetHostName)
end.

svk12
постоялец
Сообщения: 411
Зарегистрирован: 09.06.2008 18:42:47

Сообщение svk12 »

Или так:

Код: Выделить всё

  uses sysutils,crt;

begin
  ClrScr;
  write('GetEnvironmentVariable("HOSTNAME") = ');
  writeln(GetEnvironmentVariable('HOSTNAME'));
end.    
xchgeaxeax
постоялец
Сообщения: 200
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Тогда вот ещё один способ получения hostname:

Код: Выделить всё

uses SysUtils;
var F: TextFile; S: String;
begin
  Assign(F, '/proc/sys/kernel/hostname'); // Просто считываем его из файла в каталоге proc
  Reset(F);
  Read(F, S);
  Close(F);
  WriteLn('hostname = ''', S, '''');
  ReadLn;
end.
Кстати у меня способ с GetEnvironmentVariable не работает, а у кого-то не сработает мой способ.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Кстати у меня способ с GetEnvironmentVariable не работает
Ну да, не сработает. Причём

Код: Выделить всё

echo $HOSTNAME
сработает. Чуть ли не за ошибку GetEnvironmentVariable можно посчитать.

Добавлено спустя 1 час 19 минут 48 секунд:
Объяснение этого есть здесь: https://superuser.com/questions/132489/ ... e-on-linux
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

Alexander писал(а):Чуть ли не за ошибку GetEnvironmentVariable можно посчитать
ну судя по объяснению работает GetEnvironmentVariable верно
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

ну судя по объяснению работает GetEnvironmentVariable верно
Да, верно.
Ответить