Системное программирование в Linux от Роберта Лава

A

Android

0C52435A B2E0 4146 967A EEFF836E2170


Введение:

процессы наследуют UID и GID

восьмезначные разрешения: r = 4, w = 2, x = 1. Заказ это пользователь, группа, все остальные

функции обычно просто возвращают -1, чтобы указать на ошибку

более подробную информацию можно найти в extern int errno в <errno.h>

напечатать void perror (const char * str) в <stdio.h>

пример:

if (close (fd) == −1)

perror («закрыть»);



Файловый ввод / вывод

Открытие файлов:

fd = open (<путь>, флаги)

Создайте:

fd = открыть (файл, O_WRONLY | O_CREAT | O_TRUNC, 0664);

идентично

fd = creat (имя файла, 0644);

fd of -1 указывает на ошибку

чтение:

#include <unistd.h>

ssize_t read (int fd, void * buf, size_t len);

Вызов read () может привести ко многим возможностям, чтобы прочитать все байты

ssize_t ret;

while (len! = 0 && (ret = read (fd, buf, len))! = 0) {

if (ret == −1) {

if (errno == EINTR)

Продолжить;

perror («читать»);

перерыв;

}

len - = ret;

buf + = ret;

}

неблокирующие чтения могут быть достигнуты, передав O_NONBLOCK, чтобы открыть

если чтение заблокировано, оно вернет -1 и errno будет установлено в EAGAIN

записывать:

#include <unistd.h>

запись ssize_t (int fd, const void * buf, size_t count);

вызов fsync (int ft) для синхронизации записей в хранилище

fdatasync (int fd) делает то же самое без обновленных метаданных и работает быстрее

используйте флаг O_SYNC, чтобы всегда синхронизировать

закрытие:

#include <unistd.h>

int close (int fd) `

Ищу:

#include <sys / types.h>

#include <unistd.h>

off_t lseek (int fd, off_t pos, int origin);

Вы МОЖЕТЕ искать за концом файла, он будет заполнен нулями

позиция читает и пишет, чтобы избежать расы, связанной с поиском, а затем чтением

#define _XOPEN_SOURCE 500

#include <unistd.h>

ssize_t pread (int fd, void * buf, size_t count, off_t pos);

ssize_t pwrite (int fd, const void * buf, size_t count, off_t pos);

Мультиплексный ввод-вывод



poll () проще в использовании, чем select ()

оба ждут набора дескрипторов открытых файлов и возвращаются, когда они доступны

пример опроса

#include <stdio.h>

#include <poll.h>

#include <unistd.h>



int main (int argc, char ** argv)

{

struct pollfd fds [2];

fds [0] .fd = STDIN_FILENO;

fds [0] .events = POLLIN;



fds [1] .fd = STDOUT_FILENO;

fds [1] .events = POLLOUT;



int err = poll (fds, (nfds_t) 2, 0);

if (err == -1) {

PError ( "опрос");

возврат -1;

}



if (fds [0] .revents & POLLIN) {

printf ("STDIN готов \ n");

}

if (fds [1] .revents & POLLOUT) {

printf ("STDOUT ready \ n");

}



вернуть 0;

}

VFS предоставляет унифицированный интерфейс на основе блоков и inode для всех файловых систем.

Кэш страницы содержит извлеченную информацию, включая заголовки.
 
Похожие темы
Support81 ИИ превратил программирование в русскую рулетку: быстро стреляет, но что в патроне? Новости в сети 0
I Программирование Ищу работу. Предлагаю свои услуги. 1
G Команда разработчиков - php, python, веб дизайн, программирование Ищу работу. Предлагаю свои услуги. 0
B [Денис Фадеев] Программирование игр для детей на Scratch для начинающих (2020) Полезные статьи 0
A Программирование в Picat Программирование 0
R Не изучай синтаксис, изучай псевдокод и программирование! *Python* Программирование 3
T Программирование в OllyDbg Программирование 0
G Архив книг по IT (Программирование, вирусология, хакинг и много чего еще) Раздачи и сливы 0
Little_Prince Программирование на Python для тестировщиков Программирование 0
Admin Интересно Как стать «богом» в Linux, просто правильно подгадав время. Спойлер: вам понадобится Chronomaly. Новости в сети 0
Admin Статья Обеспечение безопасности некоторых аспектов Linux системы посредством нестандартного мониторинга сети сервера Анонимность и приватность 0
Admin Статья Право на root. Как повышают привилегии в Linux. Уязвимости и взлом 0
Admin Статья Как простой баг повреждения памяти ядра Linux приводит к полной компрометации системы(Часть 2) Уязвимости и взлом 0
Admin Статья Как простой баг повреждения памяти ядра Linux приводит к полной компрометации системы(Часть 1) Уязвимости и взлом 0
Admin Статья Почему ваш «Windows» прокси палится как Linux: Глубокий разбор TCP Window Size, о котором молчат. Анонимность и приватность 0
Admin Статья Взгляд с другой стороны: как Linux админ ловит вас Полезные статьи 0
Admin Статья Сбор информации в Instagram с Osintgram на Kali Linux. OSINT 0
Admin Статья CVE-2025-6018 и CVE-2025-6019: подробный технический анализ цепочки локальной эскалации привилегий в Linux Уязвимости и взлом 0
Admin Интересно Безопасный Rust, говорите? В ядре Linux нашли первую уязвимость в новом коде. Новости в сети 0
Support81 «Магический пакет» творит чудеса: как хакеры превратили Linux-сервер в невидимку Новости в сети 0
Support81 Риск обхода Secure Boot угрожает почти 200 000 ноутбуков с Linux Framework Новости в сети 0
Support81 USB Linux без следов стал ещё тише. Tails теперь прячет Tor в потоке «обычного» интернета Новости в сети 0
Support81 VShell? Скорее уж VHell: новый кошмар для Linux от UNC5174 Новости в сети 0
Support81 PUMAKIT: новый убийца безопасности Linux, который почти невозможно обнаружить Новости в сети 0
Support81 Bootkitty: первый в истории UEFI-буткит для Linux Новости в сети 0
Support81 Вирус sedexp 2 года властвует в сердце Linux Новости в сети 0
Emilio_Gaviriya Статья Уязвимости в ядре Linux и привилегии через nf_tables и ksmbd. Анонимность и приватность 0
El_IRBIS Вредоносный код в дистрибутивах Linux: Понимание угрозы и меры безопасности. Вирусология 0
Support81 10 из 10: В Linux обнаружен встроенный бэкдор (CVE-2024-3094) Новости в сети 0
R Kali linux какие бывают Свободное общение 1
R Установка языковый пакет на kali linux persistence Свободное общение 0
Denik Интересно Малварь для Linux, CronRAT, скрывается в cron job с неверными датами Новости в сети 0
B Услуги Linux администратора, настройка vps, серверов Ищу работу. Предлагаю свои услуги. 0
У Интересно Kali Linux Revealed (на русском) Полезные статьи 2
1 Языки программирования на Linux Mint. Свободное общение 3
Denik Интересно Проверяем вирусы на серверах Linux Полезные статьи 0
CMDfromBAT Интересно Взлом почты при помощи Hydra в Kali Linux Уязвимости и взлом 2
V Kali Linux netsed Уязвимости и взлом 0
Denik Интересно Трояны для слежки под Windows, macOS, Linux, Android, iOS Анонимность и приватность 0
T Проблема с иконками на kali linux kde Свободное общение 1
Eteriass Мини VPN для Kali Linux/Nipe/ Фишинг, мошенничество, СИ 1
Eteriass Фишинг на Kali linux/Shellphish/ Фишинг, мошенничество, СИ 17
E Интересно Доступ к веб-камере при помощи Kali linux и CИ Уязвимости и взлом 5
E Интересно Повышаем привилегии в Linux: TOP утилит Уязвимости и взлом 2
E Чистим Linux Полезные статьи 0
T установка Kali linux 2020.1b Свободное общение 1
CMDfromBAT RECREATOR-PHISHING - ЛУЧШИЙ ФИШИНГ ДЛЯ ЛЮБОЙ СТРАНИЦЫ! KALI LINUX Фишинг, мошенничество, СИ 31
X /HumenError/Фишинг instagram/Kali linux/ Фишинг, мошенничество, СИ 10
1 kali linux live не работают программы (wifite и тд.) Свободное общение 11
E Администрирование LINUX Полезные статьи 3

Название темы