Читаем Linux API. Исчерпывающее руководство полностью

Многие приложения и библиотеки интерпретируют символ новой строки, или символ конца строки (имеющий десятичный ASCII-код 10) как завершающий одну строку текста и начинающий другую строку. В системах UNIX отсутствует символ конца файла, и конец файла определяется при чтении, не возвращающем данные.

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

Системные вызовы ввода-вывода ссылаются на открытый файл с использованием файлового дескриптора, представляющего собой неотрицательное (обычно небольшое) целое число. Файловый дескриптор обычно возвращается из выдачи системного вызова open(), который получает в качестве аргумента путевое имя, а оно, в свою очередь, указывает на файл, в отношении которого будут выполняться операции ввода-вывода.

При запуске оболочкой процесс наследует, как правило, три дескриптора открытых файлов:

• дескриптор 0 является стандартным вводом — файлом, из которого процесс получает свой ввод;

• дескриптор 1 является стандартным выводом — файлом, в который процесс записывает свой вывод;

• дескриптор 2, являющийся стандартной ошибкой, — файлом, в который процесс записывает сообщения об ошибках и уведомления об исключительных и нештатных условиях.

В интерактивной оболочке или программе эти три дескриптора подключены, как правило, к терминалу. В библиотеке stdio они соответствуют файловым потокам stdin, stdout и stderr.

Библиотека stdio

Для выполнения файлового ввода-вывода программы обычно используют функции ввода-вывода, содержащиеся в стандартной библиотеке языка C. Этот набор функций, известный как библиотека stdio, включает функции fopen(), fclose(), scanf(), printf(), fgets(), fputs() и т. д. Функции stdio наслаиваются поверх системных вызовов ввода-вывода (open(), close(), read(), write() и т. д.).

Предполагается, что читатель уже знаком со стандартными функциями ввода-вывода (stdio) языка C, поэтому мы не рассматриваем их в данной книге. Дополнительные сведения о библиотеке stdio можно найти в изданиях [Kernighan & Ritchie, 1988], [Harbison & Steele, 2002], [Plauger, 1992] и [Stevens & Rago, 2005].

2.6. Программы

Программы обычно существуют в двух формах. Первая форма представляет собой исходный код — понятный человеку текст, состоящий из серий инструкций, написанных на языке программирования, например на C. Чтобы стать исполняемым, исходный код должен быть преобразован во вторую форму: двоичные (бинарные) инструкции на языке машины, понятные для компьютера. (В отличие от сценария, являющегося текстовым файлом с командами, напрямую обрабатываемыми программой, такой как оболочка или интерпретатор команд.) Два значения понятия «программы» обычно считаются синонимами, так как в процессе компиляции и сборки исходный код преобразуется в семантически эквивалентный двоичный машинный код.

Фильтры

Понятие «фильтр» часто обозначает программу, которая считывает вводимые в нее данные из stdin, выполняет преобразования этого ввода и записывает преобразованные данные на stdout. Примеры фильтров: cat, grep, tr, sort, wc, sed и awk.

Аргументы командной строки

В языке C программы могут получать доступ к аргументам командной строки — словам, введенным в командную строку при запуске программы. Для доступа к аргументам командной строки глобальная функция main() программы объявляется следующим образом:

int main(int argc, char *argv[])

Переменная argc содержит общее количество аргументов командной строки, а отдельные аргументы доступны в виде строковых значений, которые нужно указать в качестве элементов массива argv. Первая из этих строк, argv[0], соответствует имени самой программы.

2.7. Процессы

Говоря простым языком, процесс представляет собой экземпляр выполняемой программы. Когда программа выполняется, ядро загружает ее код в виртуальную память, выделяет память под переменные программы и определяет учетные структуры данных ядра для записи различной информации о процессе (имеются в виду идентификатор процесса, код завершения, пользовательские и групповые идентификаторы).

С точки зрения ядра процессы являются объектами, между которыми ядро должно делить различные ресурсы компьютера. В случае с ограниченными ресурсами, например памятью, ядро изначально выделяет некоторый их объем процессу и регулирует это выделение в ходе жизненного цикла процесса, реагируя на потребности процесса и общие потребности системы в этом ресурсе. Когда процесс завершается, все такие ресурсы высвобождаются для повторного использования другими процессами. Другие ресурсы, такие как время центрального процессора и сетевой трафик, являются возобновляемыми, но должны быть поровну поделены между всеми процессами.

Модель памяти процесса

Процесс логически делится на следующие части, известные как сегменты.

• Текст — инструкции программы.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных