Документация по *nix (системные вызовы)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slesh, 21 Jul 2009.

  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Кто нибудь может посоветовать хорошую документацию по системным вызовам для ОС Linux, FreeBSD итд.
    Т.е. некий аналог MSDN.

    Другими словами требуется чтобы был список системных вызовов с кратким описанием что они делают и списком передаваемых параметров.

    Но вообще было бы еще лучше еслибы был список примерных соответствий WinAPI и Имен системных вызовов.

    P.S.1 - Просьба к man не отсылать.
    P.S.2 - Также не отсылать на ковыряние /usr/include/asm/unistd.h.
    P.S.3 - Язык желательно RU или ENG
     
    #1 slesh, 21 Jul 2009
    Last edited: 21 Jul 2009
  2. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Все что ты хочешь узнать написано на страницах man, чем не подходит?
    П.С по сути man и является никсовым вариантом мсдн"а )
     
    #2 razb, 21 Jul 2009
    Last edited: 21 Jul 2009
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    man - чуть не удобно мне пользоваться )
    Вот нашел в инете доку http://www.opennet.ru/man_2.shtml
    но это онлайн версия. Ни у кого случайно нет уже выкаченного варианта?

    Но всё также остается открытым вопрос по поводу соответствия API и системных вызовов.
    А то както не охото перелопачивать все функции чтобы найти соответствие.
     
  4. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    хм, все довольно просто и удобно.
    дк скачай телепортом и будет тебе оффлайн версия ))
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    мне удобно когда дока в текстовом виде, чтобы сразу поиском можно было найти нужные данные.
    Сайт - не полный список вроде как.
    Да и скачать - инет пока не позволяется выкачивать.

    Но судя по всему аналогов многих функций вообще нет.
     
  6. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    ну я давно уже unix ом не пользовался но есть такая тема там как команда grep

    $ man ls | grep 'pattern' | less

    вот тебе и поиск...
     
    _________________________
  7. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    Извините если не в тему , но думаю в ринг0 ты тоже кодить будешь =) вот мне в свое время эта документация очень понравилась.
    http://www.linuxcenter.ru/lib/books/lkmpg.phtml
     
    1 person likes this.
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Если быть точным, то мне нужно переписать следующие 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 - только чтобы установить текщую папку ту, в которой находится прога
     
  9. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 _antony спс. но для таких целей есть парочка книг в базе по программированию дров которая на netcode лежит.
     
  10. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    для потоков вместо WaitForSingleObject лучше юзать это
     
  11. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    3,4 fwrite и fread являются ф-циями стандартной библиотеки и их можно использовать как в винде так ив никсах также они являются обертками над апи ос, в никсах аналогом будет сис. вызовы write() read()

    7,8 аналогично предидущему описанию, сис. вызовы: open() close()

    14 sleep() usleep() работаю как в процессах так и в нитях (кстати в никсах между процессами и нитями очень мутная граница)

    По потокам смотри в сторону pthreads(pthread_create,pthread_join,pthread_exit, etc)
    По событиям смотри наверно в сторону сигналов(в общем хз, не было надобности с ними работать)

    По остальным надо смотреть тк я особо не знаю что делают те или инные ф-ции, писал с твоего описания )
     
    1 person likes this.
  12. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Ra$cal - ссылка битая
     
  13. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    эм немного не в тему. а где вообще можно почитать про программинг на Си в юниксе?
    просто насколько я понимаю можно юзать и системные вызовы и чутьли не вызовы консольных улит... В общем какие-то обзорные материалы или направленные доки по Си для юникса есть??

    порылся в нете нашел пока вот че
    http://www.citforum.ru/programming/c_unix/

    нащет ExitThread - думаю exit; тоже канает помню кодил на Perl потоки с помощью вызова fork...
     
    _________________________
    #13 Gar|k, 21 Jul 2009
    Last edited: 21 Jul 2009
  14. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    мне fork не подходит. потому как у меня они должны находится в одно адресном пространстве. И при этом должно быть предварительно выделено до 1000 потоков.
    хотя и 200 хватит. Под виндой это очень просто делается. а вот под никсами - тут хз.

    Нашел инфу на счет связки SetEvent и WaitForSingleObject то в никсах вообще пздц как через жопу это приходится реализовывать.
     
  15. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Вот нарыл некоторую инфу по поводу потоков и синхронизации.
    Кому интерестно то
    1) http://www.ibm.com/developerworks/library/l-ipc2lin2.html
    хорошо описано как переписывать с винды на никсы части кода где есть работа с событиями и ожиданием этих событий.
    2) http://world.std.com/~jmhart/opensource.htm
    набор макросов которые преобразуют виндовые функции в никсовые (модуль pthreads)
     
  16. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    тыц

    зачем чтото переписывать, если уже давно все сделано за нас? есть куча кроссплатформенных библиотек. от boost'a до Qt... Ну и целая пачка фреймворков поменьше.
     
  17. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    вся фишка что функции все должны быть как можно ближе к системным вызовам. (т.е. иметь как можно более тонкую прослойку)
    Потому как программа должна полностью сохранить свою высокую производительность.
     
  18. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    ну тогда да - тока учить под каждую ось набор системных вызовов.
     
  19. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Как продолжение - пару линков...
    https://computing.llnl.gov/tutorials/pthreads/
    http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
    всё хорошо расписанно с примерчегами =)
     
    #19 FireFenix, 21 Jul 2009
    Last edited: 21 Jul 2009
  20. alex912

    alex912 New Member

    Joined:
    7 Jun 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    #20 alex912, 22 Jul 2009
    Last edited: 22 Jul 2009