Цель курса
Изучение программирования на языке Си в среде UNIX. Знакомство с UNIX API. Подготовка к курсу "Сетевое программирование в UNIX".
Литература
- Кейт Хэвиленд, Дайна Грэй, Бен Салама, Системное программирование в Unix. Рук-во программиста по разработке ПО, ДМК Пресс, 2000, ISBN 5-94074-008-1
- Keith Haviland, Marcus Gray, Ben Salama, UNIX System Programming, 2/e, Addison Wesley, 1998, ISBN 0-201-87758-9
- Richard W. Stevens, Advanced Programming in the UNIX(R) Environment, Addison Wesley, 1992, ISBN 0-201-56317-7
Другие ресурсы
- Файлы к книге "Системное программирование в Unix"
- PuTTY: a free Win32 telnet/ssh client
- Краткое описание работы с emacs и gdb
Содержание лекций
27.02.2002
- Основные понятия и терминология. Файл. Каталоги и пути. Владелец файла, права доступа.
- Устройства
- Межпроцессное взаимодействие
- Системные вызовы
11.03.2002
- open, creat, O_CREAT | O_EXCL, close
- Необходимость проверки кода возврата. Мифы о безопасном ПО: уроки знаменитых катастроф
- close, read, write
- lseek, появление gap при позиционировании за пределы файла и последующей записи
- unlink, remove
- стандартный ввод, вывод, ошибка, errno, perror, strerror
25.03.2002
- Пользователи и права доступа
- umask, open, access, chmod, chown
- строение файловой системы UNIX, inode
- жесткая ссылка (hard link), link, unlink, rename
- символическая ссылка (symbolic link), symlink
- stat, lstat, fstat
- использование stat и chmod для изменения прав доступа
22.04.2002
- Каталоги, mkdir, rmdir
- opendir, closedir, readdir, rewinddir
- chdir, getcwd, ftw
- sync, fsync
- statvfs, fstatvfs
- pathconf, fpathconf, limits.h
- Процесс, создание процессов, fork, exec, exit, wait (кратко)
6.05.2002
- Создание процессов, fork.
- Семейство функций exec.
- Совместное использование fork и exec, пример.
- Наследование при порождении процесса, пример использования для межпроцессной коммуникации (pipe).
- Завершение процессов exit.
- Получение кода возврата, wait, waitpid, семейство макросов WIF*.
- Zombie, вызов wait в обработчике сигнала SIGCHLD
- Атрибуты процесса, getpid, getppid, getpgid, getsid, getuid, getgid, getcwd, nice, sched_setscheduler, ulimit.
20.05.2002
- Сигналы, имена сигналов
- Завершение программы, причины завершения, WIF*, W*
- Обработка сигналов, сигналы в *BSD и SYSV, sigaction
- sigemptyset, sigfillset, sigaddset, sigdelset, sigaction
- sigsetjpm, siglongjmp
- sigprocmask
- kill, raise, alarm, pause
- Межпроцессное взаимодействие, pipe, select
Задания для практик
- Глава 2. Файл
- Глава 3. Работа с файлами
- Глава 4. Каталоги, файловые системы и специальные файлы
- Глава 5. Процессы.