UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Время (пользователь+система, в сек.)
| Размер | PDP-11/40 | VAX-11/750 |
|---|---|---|
| 1 | 271.0 | 188.8 |
| 10 | 29.9 | 19.3 |
| 100 | 3.8 | 2.6 |
| 512 | 1.3 | 1.0 |
| 1024 | 1.2 | 0.6 |
| 5120 | 1.0 | 0.6 |
Размер блока на диске для системы на PDP-11 составляет 512 байт и 1024 байта — для VAX.
Доступ нескольких процессоров к одному и тому же файлу в одно и то же время является совершенно законным: в самом деле, один процесс может писать, в то время как другой читает. Это обескураживает, если не входит в ваши планы, но иногда оказывается полезным. Даже несмотря на то, что при одном обращении к функции
readreadreadslowreadslow$ slowprog >temp &5213$ readslow <temp | grep somethingИными словами, медленная программа выполняет вывод в файл;
readslowПо составу
readslowreadslowEOF/* readslow: keep reading, waiting for more */#define SIZE 512 /* arbitrary */main() { char buf[SIZE]; int n; for (;;) { while ((n = read(0, buf, sizeof buf)) > 0) write(1, buf, n); sleep(10); }}Функция
sleepsleep(3)readslowreadДобавьте
readslownn-ftailtailreadslowЧто происходит с
readslowfstatopencreatcloseunlinkВсе стандартные файлы, кроме установленных по умолчанию, — входной, выходной и файл диагностики вы должны явно открыть для чтения или записи. Это можно сделать с помощью двух системных вызовов — открыть и создать [14].
Функция
openintchar *name;int fd, rwmode;fd = open(name, rwmode);Как и для
fopennamerwmodeopenПопытка открыть несуществующий файл является ошибкой. Системный вызов
creatint perms;fd = creat(name, perms);Вызов
creatcreatpermscreatcreatcreatКак известно из второй главы, с файлом связаны девять битов информации о защите, контролирующих разрешение на чтение, запись или выполнение, так что число из трех восьмеричных цифр удобно для спецификации этой информации. Например, 0755 дает разрешение владельцу файла читать, писать и выполнять его, а чтение и выполнение файла доступно любому пользователю. Не забывайте о первом нуле, который определяет восьмеричные числа в языке Си.
