Рубрики
Конспект: Linux

Конспект: программирование C/C++

Ссылка:

0. hello world

1. Мульти файловое программирование

1. automake make

3. Модель КИС:

4. Пример статической библиотеки:

Пример совместно используемой библиотеки

Окружение:

Массив environ

Чтение окружения: getenv()

Запись окружения: setenv()

Сырая модификация окружения: putenv()

Удаление переменной окружения: unsetenv()

Очистка окружения: clearenv()

Механизмов ввода-вывода в Linux:

Файловые дескрипторы

Открытие файла: системный вызов open()

Закрытие файла: системный вызов close()

Чтение файла: системный вызов read()

Запись в файл: системный вызов write()

Произвольный доступ: системный вызов lseek()

Основы многозадачности в Linux

Использование getpid() и getppid()

Порождение процесса

Замена образа процесса

Таблица 1. Флаги общего режима

Флаг Восьмиричное представление RWX-представление
S_IRWXU 00700 rwx — —
S_IRUSR 00400 r— — —
S_IREAD 00400 r— — —
S_IWUSR 00200 -w- — —
S_IWRITE 00200 -w- — —
S_IXUSR 00100 —x — —
S_IEXEC 00100 —x — —
S_IRWXG

00070

— rwx —
S_IRGRP 00040 — r— —
S_IWGRP 00020 — -w- —
S_IXGRP 00010 — —x —
S_IRWXO 00007 — — rwx
S_IROTH 00004 — — r—
S_IWOTH 00002 — — -w-
S_IXOTH 00001 — — —x

Таблица 2. Флаги расширенного режима

Флаг Восьмиричное представление Описание
S_IFMT 0170000 Двоичная маска определения типа файла (побитовое ИЛИ всех
следующих ниже флагов)
S_IFDIR 0040000 Каталог
S_IFCHR 0020000 Символьное устройство
S_IFBLK 0060000 Блочное устройство
S_IFREG 0100000 Обычный файл
S_IFIFO 0010000 Канал FIFO
S_IFLNK 0120000 Символическая ссылка

Таблица 3. Дополнительные флаги

Флаг Восьмиричное представление Описание
S_ISUID 0004000 Бит SETUID
S_ISGID 0002000 Бит SETGID
S_ISVTX 0001000 Липкий (sticky) бит

Таблица 4. Флаги режима открытия файла

Флаг Описание
O_RDONLY Только чтение (0)
O_WRONLY Только запись (1)
O_RDWR Чтение и запись (2)
O_CREAT Создать файл, если не существует
O_TRUNC Стереть файл, если существует
O_APPEND Дописывать в конец
O_EXCL Выдать ошибку, если файл существует при использовании O_CREAT
O_DSYNC Принудительная синхронизация записи
O_RSYNC Принудительная синхронизация перед чтением
O_SYNC Принудительная полная синхронизация записи
O_NONBLOCK Открыть файл в неблокируемом режиме, если это возможно
O_NDELAY То же, что и O_NONBLOCK
O_NOCTTY Если открываемый файл — терминальное устройство, не делать его
управляющим терминалом процесса
O_NOFOLLOW Выдать ошибку, если открываемый файл является символической
ссылкой
O_DIRECTORY Выдать ошибку, если открываемый файл не является каталогом
O_DIRECT Попытаться минимизировать кэширование чтения/записи файла
O_ASYNC Генерировать сигнал, когда появляется возможность чтения или
записи в файл
O_LARGEFILE Разрешить большие файлы (размер которых не может быть
представлен в 31 бите (для систем с поддержкой LFS)