Кто нибудь может посоветовать хорошую документацию по системным вызовам для ОС Linux, FreeBSD итд. Т.е. некий аналог MSDN. Другими словами требуется чтобы был список системных вызовов с кратким описанием что они делают и списком передаваемых параметров. Но вообще было бы еще лучше еслибы был список примерных соответствий WinAPI и Имен системных вызовов. P.S.1 - Просьба к man не отсылать. P.S.2 - Также не отсылать на ковыряние /usr/include/asm/unistd.h. P.S.3 - Язык желательно RU или ENG
Все что ты хочешь узнать написано на страницах man, чем не подходит? П.С по сути man и является никсовым вариантом мсдн"а )
man - чуть не удобно мне пользоваться ) Вот нашел в инете доку http://www.opennet.ru/man_2.shtml но это онлайн версия. Ни у кого случайно нет уже выкаченного варианта? Но всё также остается открытым вопрос по поводу соответствия API и системных вызовов. А то както не охото перелопачивать все функции чтобы найти соответствие.
мне удобно когда дока в текстовом виде, чтобы сразу поиском можно было найти нужные данные. Сайт - не полный список вроде как. Да и скачать - инет пока не позволяется выкачивать. Но судя по всему аналогов многих функций вообще нет.
ну я давно уже 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 лежит.
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)
тыц зачем чтото переписывать, если уже давно все сделано за нас? есть куча кроссплатформенных библиотек. от boost'a до Qt... Ну и целая пачка фреймворков поменьше.
вся фишка что функции все должны быть как можно ближе к системным вызовам. (т.е. иметь как можно более тонкую прослойку) Потому как программа должна полностью сохранить свою высокую производительность.
Как продолжение - пару линков... https://computing.llnl.gov/tutorials/pthreads/ http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html всё хорошо расписанно с примерчегами =)
есть книга UNIX. Профессиональное программирование от стивенса, в ней всё более менее подробно описано