Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Программирование для Linux. Профессиональный подход - Митчелл М.

Митчелл М., Оулдем Дж., Самьюал А. Программирование для Linux. Профессиональный подход — М.: Вильямс , 2003. — 288 c.
ISBN 5-8459-0243-6
Скачать (прямая ссылка): programmirovaniedlyalinux2003.djvu
Предыдущая << 1 .. 65 66 67 68 69 70 < 71 > 72 73 74 75 76 77 .. 128 >> Следующая

fp = fppen ("/proc/uptime*, "r");
fscanf (fp. "%1? &uptime, bidle_time);
fciose <fp).-
/* Форматирование и вывод. V prmt_time ("uptime ", (long) uptime) ,-
print_time ("idle time", (long) idle_time); return 0.
)
Общее время работы системы отображают также команда uptime и функция
sysinfo () (описана в разделе 8.14, "Функция sysin?o(): получение
системной статистики''). Команда uptime дополнительно выдает показатели
средней загруженности, извлекаемые из файла/prcc/loadavg.
152 Часть II. Секреты Linux
8
Системные вызовы Linux
В этой главе...
5 1. Команда strace 154
¦>.2. Функция acccss{): проверка прав доступа к файлу 155
3 3. Функция fcntl{): блокировки и другие операции
над файлами 156
•\4. Функции fsync() и fdatasync(): очистка дисковых буферов 158
5.5. Функции getrlimit() и selrlimit(): лимиты ресурсов 159
5".6. Функция getrusage(): статистика процессов 160
8.7. Функция gettimeofdayQ: системные часы 161
5 8. Семейство функций ш!оск(): блокирование
физической памяти 162
•>.9. Функция mprotect(): задание прав доступа к памяти 163
5 10. Функция nanoslecp(): высокоточная пауза 165
5.11. Функция readlinkQ: чтение символических ссылок 166
5.12- Функция sendfile(): быстрая передача данных 167
•V13. Функция sethimer(): задание интервальных таймеров 168
5.14. Функция sysinfo(): получение системной статистики 170
5.15. Функция unameQ 170
Мы уже познакомились с большим количеством функций, реализующих различные
системные задачи, напрнмер анализ командной строки, манипулирование
процессами н отображение файлов в памяти. Если присмотреться
повнимательнее, то окажется, что все они подпадают под две категории в
зависимости от способа реализации.
¦ Библиотечная функция - это обычная функция, которая находится во
внешней библиотеке, подключаемой к программе. Большинство рассмотренных
нами функций
содержится в стандартной библиотеке языка С. libc. Вызов библиотечной
функции реализуется традиционно: ее аргументы помещаются в регистры
процессора или п стек и управление передается в начало кода функции (этот
код находится в библиотеке, загруженной в память).
в Системный вызов реализован в ядре Linux. Аргументы вызова упаковываются
и передаются ядру, которое берет на себя управление программой, пока
вызов не завершится. Системный вызов - это не обычная функция, и для
передачи управления ядру требуется специальная подпрограмма. В C.XU-
библиотеке языка С (реализация стандартной библиотеки, имеющаяся в Linux)
дчя системных вызовов созданы функции-оболочки, упрощающие обращение к
ним. В качестве примеров системных вызовов можно привести низкоуровневые
функции ввода-вывода, такие как open {) и read(].
Совокупнесть системных вызовов Linux формирует основной интерфейс между
программами и ядром. Каждому вызову соответствует некая элементарная
операция или функция.
Некоторые системные вызовы оказывают очень большое влияние на систему.
Например. есть вы доны, позволяющие завершить работу Linux, выделить
системные ресурсы или запретить другим пользователям доступ к ресурсам. С
такими вызовами связано ограничение: только процессы, выполняющиеся с
привилегиями суперпользователя (учетная запись root), имеют право
обращаться к иим. В противном случае вызовы завершатся ошибкой.
Внутри себя библиотечная функция может обращаться к другим функциям или
системным вызовам.
В настоящее время в Lmux есть около 200 системных вызовов. Их список
находится в файле /usr/include/asm/unistd.h. Некоторые из них
используются только внутри системы а некоторые предназначены лишь дчя
реализации специализированных библиотечных функций В этой главе будут
рассмотрены те системные вызовы, которые чаще всего используются
системными программистами.
8.1. Команда strace
Прежде чем изучать системные вызовы, полезно познакомиться с командой
strace, которая отслеживает выполнение заданной программы, выводя список
всех запрашиваемых системных вызовов и получаемых сигналов. Эта команда
ставится в начале строки вызова программы, например:'
% strace hostname
В результате будет получено несколько экранов выходной информации. Каждая
строка соответствует одному системному вызову. В строке указываются имя
вызова, его аргументы (или их сокращенные обозначения, если аргументы
слишком дчиниые) н возвращаемое значение По возможности команда strace
старается отображать не числовые значения, а символические константы.
Показываются также поля структур, переданных по указателю. Вызовы обычных
функций не регистрируются.
В случае команды strace hostname первая строка сообщает о системном
вызове execve (), загружающем программу hostname:*
execvel "/bin/hostname", {"hostname")" [/* 49 vars */]) " 0
f Команда hostname, вызванная без флагов, отображает имя компьютера.
2 В Linux семейство функции ехес () реализовано на основе системного
вызова execve ().
154 Часть II. Секреты Linux
Первый аргумент - это имя запускаемой программы. За ним идет список
аргументов, состоящий из одного элемента. Дальше указан список переменных
Предыдущая << 1 .. 65 66 67 68 69 70 < 71 > 72 73 74 75 76 77 .. 128 >> Следующая