LINUX.ORG.RU

Linux API


0

0

Подскажите пожалйста новичку. Есть ли для Линуха документ описывающий его API для прикладных программ? Что-нибудь наподобии MSDN? Чтобы можно было удобно посмотреть какие функции в каких случаях дергать и с какими параметрами. Для начала интересуют базовые вещи: работа с памятью, с файлами, загрузка динамических библиотек, многопоточность, синхронизация и т.д.

Спасибо.


>Что-нибудь наподобии MSDN? Чтобы можно было удобно

чёрный юмор

dimon555 ★★★★★
()

> Есть ли для Линуха документ описывающий его API для прикладных программ?

Нет. Линукс - это только ядро. Интерфейс прикладных программ определяется установленными в системе библиотеками. Обычно ставят как минимум ту или иную версию libc - определенную стандартом библиотеку функций для языка С. Всё остальное - по желанию.

Прикладные программы обычно пишут опираясь на какой-либо фреймворк или тулкит. Наиболее популярные - KDE / QT.

LamerOk ★★★★★
()
Ответ на: комментарий от Logger

>Не по теме, в основном, выдает твой любимый гугл
Почитай лучше сначала книжку в духе "Программирование & Линукс", чтобы общее понимание иметь.
Потом гугель станет в самую тему.

tzukko
()
Ответ на: комментарий от LamerOk

>Нет. Линукс - это только ядро. Интерфейс прикладных программ определяется установленными в системе библиотеками.

это неправда... выставляешь в регистр %AX номер системного вызова и int 80h (лучше sysenter, но я всё время забываю как) и вуаля... если конечно правильно параметры в друние регистры указал

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

> это неправда... выставляешь в регистр %AX номер системного вызова и int 80h (лучше sysenter, но я всё время забываю как) и вуаля... если конечно правильно параметры в друние регистры указал

правда, правда, или gethostbyname тоже в ядре реализовано ? :)

ОС называется GNU/Linux и её основная API библиотека GNU C Library http://en.wikipedia.org/wiki/GNU_C_Library

"The GNU C Library, commonly known as glibc, is the C standard library released by the GNU Project. Originally written by the Free Software Foundation (FSF) for the GNU operating system"

Eshkin_kot ★★
()
Ответ на: комментарий от Eshkin_kot

>ОС называется GNU/Linux и её основная API библиотека GNU C Library

там обёртки над всеми системными вызовами. Никто не мешает написать программное окружение без glibc. Или ты думаешь, что никакая программа не может функционировать без glibc?

dimon555 ★★★★★
()
Ответ на: комментарий от dilmah

> http://www.unix.org/single_unix_specification/

Отлично послал %)

Топикстартер, что ты программировать-то собираешься? Есть много хороших книг по программированию в Линукс/Unix, но единой точки входа вроде MSDN - нет.

tailgunner ★★★★★
()

Hi!

К сожалению аналога MSDN ты не найдешь.
Жизнь прикладного программиста для Linux во многом 
сложнее, чем для Windows.
По началу чтение и главное поиск нужной документации будут 
занимать кучу времени.
Но в некотором смысле это даже полезно, так как по ходу изучения
подимается очень широкий спектр вопросов.
Вообщем от изучения Linux очень расширится кругозор, многие
вещи перестают быть черным ящиком.

Коллега заметил, что Windows-программисты ориентированы на решение
задач, а UNIX-программисты на решение проблем :)
 
Я бы посоветовал почитать про POSIX, SUSv3 ит.п.
Обязательно нужно понять что такое системные вызовы и какие они бывают.
В изучении сильно поможет strace (одна из самых нужных утилит).
Дока по системным вызовам во 2-м разделе man'а:
man 2 write
man 2 socket

Полезным может быть изучение 7-го раздела man'а, например:
man 7 socket
man 7 mq_overview
man 7 tcp        
man 7 pthreads
man 7 sem_overview
man 7 signal
man 7 epoll

Есть неплохие книге по ядру, например "Understanding The Linux Kernel".
Некоторые главы нужно обязательно прочитать.

Очень советую прочитать все книги Стивенса.
Он "guru of the Unix gurus". Не больше не меньше.

Удачи!

Krivenok_Dmitry
()
Ответ на: комментарий от dimon555

> выставляешь в регистр %AX номер системного вызова

А это ничего, что на моём AMD64 такого регистра нет? Всё равно можно вызывать int80h? )))

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

>А это ничего, что на моём AMD64 такого регистра нет? Всё равно можно вызывать int80h? )))

тебе никто не мешает попробовать, а вообще я ничего не знаю, все секреты в /usr/src/linux/ там и найдёшь как сисентер для твоего процессора выгдядит

dimon555 ★★★★★
()
Ответ на: комментарий от LamerOk

>> выставляешь в регистр %AX номер системного вызова

> А это ничего, что на моём AMD64 такого регистра нет?

Проверь еще раз %)

> Всё равно можно вызывать int80h? )))

Конечно.

tailgunner ★★★★★
()
Ответ на: комментарий от LamerOk

>А это ничего, что на моём AMD64 такого регистра нет?
ЩИТО?
>Всё равно можно вызывать int80h?

Отож =)

tzukko
()
Ответ на: комментарий от tailgunner

tailgunner, tzukko

Вот ведь дотошные )))

Ладно-ладно, ARM9 )))

LamerOk ★★★★★
()
Ответ на: комментарий от SSZB

> Вот аналог MSDN в Linux:

Бгг. Ты MSDN-то видел в глаза?

> http://doc.trolltech.com/4.5/index.html тут ты найдешь 98% того что тебе может понадобиться для написания прикладных программ!!!!

...на Си++ с использованием Qt.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Ты MSDN-то видел в глаза?

Да. Конечно оно помасштабнее будет. Но что Вы в Линуксе видели масштабного? Каждый кто в лес кто по дрова. OSS, блин...

> ...на Си++ с использованием Qt.

Ага... Ну не на C/GTK писать же прикладные программы?

SSZB
()
Ответ на: комментарий от LamerOk

> А это ничего, что на моём AMD64 такого регистра нет?

да есть он, есть,

> Всё равно можно вызывать int80h? )))

с этим сложнее. на x86 (!i386) вызвать-то можно, но
__NR_ другой. TS_COMPAT, опять же...

idle ★★★★★
()
Ответ на: комментарий от SSZB

> Ага... Ну не на C/GTK писать же прикладные программы?

А ты GTK в глаза в своей жизни видел? На ней и писать. И да, открой для себя Devhelp.

Ian ★★
()
Ответ на: комментарий от dimon555

> Никто не мешает написать программное окружение без glibc

Да и ОС не обязательна... Ты все так программы пишешь? :). Сколько прикладных программ под x86 без libc тобой уже написано? :)

true_admin ★★★★★
()
Ответ на: комментарий от SSZB

>> ...на Си++ с использованием Qt.

> Ага...

Не все так делают (ИМХО, писать морды на Си++ - сомнительная идея на сегодня).

> Ну не на C/GTK писать же прикладные программы?

Требующую скорости логику на Си, морду - на Питоне. Или всё на Mono/Gtk#. Это не говоря уже о более экзотических вариантах...

tailgunner ★★★★★
()
Ответ на: комментарий от dimon555

> hello world на ассемблере

В таком случае я тоже в элитном клубе разработчиков которые пишут проги без libc :)

true_admin ★★★★★
()
Ответ на: комментарий от xydo

(ах, да. фиг ты за всю свою жизнь перепишешь на асм всё, что крутится в юзер_моде)))

xydo ★★
()
Ответ на: комментарий от tailgunner

> (ИМХО, писать морды на Си++ - сомнительная идея на сегодня)

Почему же? Конечно, С++ далеко не идеален, но все же... Почему бы и нет, в сочетании с Qt?

> Требующую скорости логику на Си,

Может я не проникся идеей сего языка, но ИМХО даже логику проще написать на С++, ибо там есть ООП (чувствую ща меня закидают какашками :), нормальные шаблоны и много чего другого. При этом, по скорости работы, как правило, не сильно уступает С.

> Или всё на Mono/Gtk#.

Эта идея мне больше нравиться, только я выбираю Java+Jambi для своих поделок.

SSZB
()
Ответ на: комментарий от SSZB

> С++ далеко не идеален, но все же... Почему бы и нет, в сочетании с Qt?

Не вижу выигрыша по сравнению с Питоном.

>> Требующую скорости логику на Си,

>Может я не проникся идеей сего языка, но ИМХО даже логику проще написать на С++, ибо там есть ООП

Если скорости требует относительно небольшая часть проги, можно писать и на Си - с ним несколько легче связывать тот же Питон. Но можно и на Си++, недостатки те же, что и у Си.

> я выбираю Java+Jambi для своих поделок.

Воистину странный выбор. Как говориться, worst of both worlds. Тем более, что Jambi находится в клинеической смерти :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Чем Питон лучше С++ для написания GUI?

> Воистину странный выбор. Как говориться, worst of both worlds.

Почему? Чем Java+Jambi так плох?

Java обладает переносимостью, а в mono хз какие грабли могут вылезти. А таскать (прежде всего для виндоуса) библиотеку (runtime) придется как для Java+Jambi, так и для mono/gtk#.

> Тем более, что Jambi находится в клинеической смерти :)

Это таки да... Я думаю, все будет хорошо в будущем...

SSZB
()
Ответ на: комментарий от SSZB

> Чем Питон лучше С++ для написания GUI?

Отсуствием трудноуловимых ошибок типа порчи памяти. Резким сокращением возможности утечек. Сам язык более простой и выразительный.

>> Воистину странный выбор. Как говориться, worst of both worlds.

>Почему? Чем Java+Jambi так плох?

Жирная VM, которая, помимо всех своих либ, тащит с собой еще и Qt.

tailgunner ★★★★★
()
Ответ на: комментарий от SSZB

> Чем Питон лучше С++ для написания GUI?

эм, ну он на два порядка круче без вариантов. Посмотри туториалы по pyqt/pygtk и сравни с C-кодом :).

true_admin ★★★★★
()

Есть такая замечательная штука: в консоли пишешь

> info libc

И просвещаешься.

linuxfan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.