Просмотр полной версии : Документация по *nix (системные вызовы)
Кто нибудь может посоветовать хорошую документацию по системным вызовам для ОС Linux, FreeBSD итд.
Т.е. некий аналог MSDN.
Другими словами требуется чтобы был список системных вызовов с кратким описанием что они делают и списком передаваемых параметров.
Но вообще было бы еще лучше еслибы был список примерных соответствий WinAPI и Имен системных вызовов.
P.S.1 - Просьба к man не отсылать.
P.S.2 - Также не отсылать на ковыряние /usr/include/asm/unistd.h.
P.S.3 - Язык желательно RU или ENG
P.S.1 - Просьба к man не отсылать.
Все что ты хочешь узнать написано на страницах man, чем не подходит?
П.С по сути man и является никсовым вариантом мсдн"а )
man - чуть не удобно мне пользоваться )
Вот нашел в инете доку http://www.opennet.ru/man_2.shtml
но это онлайн версия. Ни у кого случайно нет уже выкаченного варианта?
Но всё также остается открытым вопрос по поводу соответствия API и системных вызовов.
А то както не охото перелопачивать все функции чтобы найти соответствие.
man - чуть не удобно мне пользоваться )
хм, все довольно просто и удобно.
Вот нашел в инете доку http://www.opennet.ru/man_2.shtml
дк скачай телепортом и будет тебе оффлайн версия ))
мне удобно когда дока в текстовом виде, чтобы сразу поиском можно было найти нужные данные.
Сайт - не полный список вроде как.
Да и скачать - инет пока не позволяется выкачивать.
Но судя по всему аналогов многих функций вообще нет.
ну я давно уже unix ом не пользовался но есть такая тема там как команда grep
$ man ls | grep 'pattern' | less
вот тебе и поиск...
Извините если не в тему , но думаю в ринг0 ты тоже кодить будешь =) вот мне в свое время эта документация очень понравилась.
http://www.linuxcenter.ru/lib/books/lkmpg.phtml
Если быть точным, то мне нужно переписать следующие API функции под Linux
Если у ктото сталкивался с таким или с некоторыми из этих функций, то опишите плиз.
Пока что нашел только следующие аналоги которые подходят
1) Все фнукции работы с сокетами остаются почти без изменений
2) WSAStartup - вообще не нужна
3) WriteFile - fwrite
4) ReadFile - fread
5) GetSystemTimeAsFileTime - time
6) RtlFillMemory - можно самому написать быстро
7) CloseHandle - fclose
8) CreateFileA - fopen
9) FindFirstFileA / FindNextFileA / FindClose можно заменить на opendir / readdir / closedir
10) UnmapViewOfFile - munmap
11) ExitProcess - exit
12) CreateFileMappingA / MapViewOfFile - mmap
13) InterlockedIncrement и тому подобные - самому написать быстро.
14) Sleep - sleep (но хз описано что приостанавливает процесс, а в моем случае это долно юзать внутри потока)
Так что незнаю подойдет она или нет.
А вот то, что еще не найдено.
1) ExitThread - ?
2) CreateThread - ?
3) TerminateThread - ?
4) WaitForSingleObject - вот тут вот вообще тёмный лес. У меня эта функция ожидает наступления события (Event).
5) CreateEventA / SetEvent - тот тоже хз. невстречал функций. т.е. идея такая - создается событие. Поток ждет наступления этого события через WaitForSingleObject.
6) VirtualAlloc - вот тут вот хз. Думал malloc. Но хз потому как нужно выделять целые блоки данных до 500 метров.
и врядли malloc подойдет. т.к. под винду сишный malloc недавал такого
7) VirtualFree - в зависимости от выбранного способа для VirtualAlloc
8) GetFileSize - хз. аналога пока не нашел. быза задумка про переход в конец файла с последующим получение позиции но это черезжопны метод
9) GetPrivateProfileIntA - можно отказаться или сделать вручную работу с файлами
10) GetProcessMemoryInfo - желательно но не обязательно - т.е. мне нужно WorkingSetSize, PeakWorkingSetSize, PagefileUsage, PeakPagefileUsage
11) CreateToolhelp32Snapshot / Thread32First / Thread32Next - любая функция которая вернет кол-во запущенных в проге потоков
12) GetModuleFileNameA и SetCurrentDirectoryA - только чтобы установить текщую папку ту, в которой находится прога
2 _antony спс. но для таких целей есть парочка книг в базе по программированию дров которая на netcode лежит.
для потоков вместо WaitForSingleObject лучше юзать это (http://bravit.rsu.ru/distrib/Boost.Threads_Intro.pdf)
3,4 fwrite и fread являются ф-циями стандартной библиотеки и их можно использовать как в винде так ив никсах также они являются обертками над апи ос, в никсах аналогом будет сис. вызовы write() read()
7,8 аналогично предидущему описанию, сис. вызовы: open() close()
14 sleep() usleep() работаю как в процессах так и в нитях (кстати в никсах между процессами и нитями очень мутная граница)
По потокам смотри в сторону pthreads(pthread_create,pthread_join,pthread_exit, etc)
По событиям смотри наверно в сторону сигналов(в общем хз, не было надобности с ними работать)
По остальным надо смотреть тк я особо не знаю что делают те или инные ф-ции, писал с твоего описания )
эм немного не в тему. а где вообще можно почитать про программинг на Си в юниксе?
просто насколько я понимаю можно юзать и системные вызовы и чутьли не вызовы консольных улит... В общем какие-то обзорные материалы или направленные доки по Си для юникса есть??
порылся в нете нашел пока вот че
http://www.citforum.ru/programming/c_unix/
нащет ExitThread - думаю exit; тоже канает помню кодил на Perl потоки с помощью вызова fork...
мне fork не подходит. потому как у меня они должны находится в одно адресном пространстве. И при этом должно быть предварительно выделено до 1000 потоков.
хотя и 200 хватит. Под виндой это очень просто делается. а вот под никсами - тут хз.
Нашел инфу на счет связки SetEvent и WaitForSingleObject то в никсах вообще пздц как через жопу это приходится реализовывать.
Вот нарыл некоторую инфу по поводу потоков и синхронизации.
Кому интерестно то
1) http://www.ibm.com/developerworks/library/l-ipc2lin2.html
хорошо описано как переписывать с винды на никсы части кода где есть работа с событиями и ожиданием этих событий.
2) http://world.std.com/~jmhart/opensource.htm
набор макросов которые преобразуют виндовые функции в никсовые (модуль pthreads)
тыц (http://ifolder.ru/13201170)
зачем чтото переписывать, если уже давно все сделано за нас? есть куча кроссплатформенных библиотек. от boost'a до Qt... Ну и целая пачка фреймворков поменьше.
вся фишка что функции все должны быть как можно ближе к системным вызовам. (т.е. иметь как можно более тонкую прослойку)
Потому как программа должна полностью сохранить свою высокую производительность.
ну тогда да - тока учить под каждую ось набор системных вызовов.
FireFenix
21.07.2009, 23:43
Как продолжение - пару линков...
https://computing.llnl.gov/tutorials/pthreads/
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
всё хорошо расписанно с примерчегами =)
есть книга UNIX. Профессиональное программирование (http://www.ozon.ru/context/detail/id/3406745/) от стивенса, в ней всё более менее подробно описано
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot