Системные вызовы
Здесь перечислены наиболее важные системные вызовы, которые используются при работе с Linux.
Помните, что %eax хранит номера системных вызовов, и что возвращаемые значения и коды ошибок также сохраняются в %eax.
Таблица важных системных вызовов Linux
%eax | Имя | %ebx | %ecx | %edx | Примечание |
---|---|---|---|---|---|
1 | exit | возвращаемое значение (int) | Выход из программы | ||
3 | read | дескриптор файла | начало буфера | размер буфера (int) | Считывает данные в буфер |
4 | write | декриптор файла | начало буфера | размер буфера (int) | Записывает буфер в файл. |
5 | open | имя файла, завешаемое нулевым символом | список опций | режим доступа | Открывает указанный файл. Возвращает дескриптор файла или номер ошибки. |
6 | close | дескриптор файла | Закрывает файл по его дескриптору. | ||
12 | chdir | имя директории, завершаемое нулевым символом | Меняет текущую директория вашей программы. | ||
19 | lseek | дескриптор файла | смещение | режим | Меняет позицию текущего размещения в файле. Режим равен 1 для абсолютного и 0 для относительного смещения |
20 | getpid | Возвращает ID текущего процесса. | |||
39 | mkdir | имя директории, завершаемое нулевым символом | разрешения | Создаёт указанную директорию. Предполагает, что все директории в пути существуют. | |
40 | rmdir | имя директории, завершаемое нулевым символом | Удаляет указанную директорию. | ||
41 | dup | дескриптор файла | Возвращает новый дескриптор файла, который используется также как и существующий. | ||
42 | pipe | pipe array | Создаёт два дескриптора файлов и в один файл пишет то, что читает в другом файле. | ||
45 | brk | новое системное прерывание | Устанавливает системное прерывание. . | ||
54 | ioctl | дескриптор файла | запрос | аргументы | Используется для установки параметров через файлы устройств. Его использование различается в зависимости от типа файла или устройства, на которое ссылается дескриптор. |
взято и переведено отсюда
Поддержите проект, если он помог вам
Проект продвигается за счёт личных средств и времени авторского коллектива. Если вы нашли здесь то, что искали, то вы можете выразить свою благодарность финансово. Даже небольшой платёж помогает авторам в их труде, сохраняя их вовлечённость и высокую мотивацию чтобы строить открытый мир равных возможностей для всех неравнодушных людей вокруг.
Linux. Системное программирование.
Данная книга рассказывает о системном программировании в Linux. Системное программирование — это практика написания системного ПО, низкоуровневый код которого взаимодействует непосредственно с ядром и основными системными библиотеками. Иными словами, речь далее пойдет в основном о системных вызовах Linux и низкоуровневых функциях, в частности тех, которые определены в библиотеке C. Есть немало пособий, посвященных системному программированию для UNIX-систем, но вы почти не найдете таких, которые рассматривают данную тему достаточно подробно и фокусируются именно на Linux. Еще меньше подобных книгучитывают новейшие релизы Linux и продвинутые интерфейсы, ориентированные исключительно на Linux. Эта книга не только лишена всех перечисленных недостатков, но и обладает важным достоинством: дело в том, что я написал массу кода для Linux, как для ядра, так и для системных программ, расположенных непосредственно «над ядром». На самом деле я реализовал на практике ряд системных вызовов и других функций, описанных далее. Соответственно книга содержит богатый материал, рассказывая не только о том, как должны работать системные интерфейсы, но и о том, как они действительно работают и как вы сможете использовать их с максимальной эффективностью. Таким образом, данная книга одновременно является и руководством по системному программированию для Linux, и справочным пособием, описывающим системные вызовы Linux, и подробным повествованием о том, как создавать более интеллектуальный и быстрый код. Текст написан простым, доступным языком. Независимо от того, является ли создание системного кода вашей основной работой, эта книга научит полезным приемам, которые помогут вам стать по-настоящему высокопрофессиональным программистом.