Linux программирование в примерах
Шрифт:
Вскоре мы увидим пример кода. Дополнительные значения
Системный вызов
В
Если вы будете игнорировать возвращаемое значение, специально приведите его к типу
Легкомысленность этого совета в том, что слишком большое количество приведений к
Как упоминалось, число открытых файлов, если оно большое, ограничивается, и вам всегда следует закрывать файлы, когда работа с ними закончена. Если вы этого не сделаете, то в конечном счете выйдете за пределы лимита дескрипторов файлов, создав ситуацию, которая ведет к потере устойчивости части вашей программы.
Система закрывает все открытые файлы, когда процесс завершается, но — за исключением 0, 1 и 2 — плохая манера полагаться на это.
Когда
4.4.2.1. Отображение переменных
Стандартные библиотечные функции ввода/вывода и переменные
Иногда полезно получить непосредственный доступ к дескриптору файла, связанному с указателем файла
Пример
4.4.2.2. Закрытие всех открытых файлов
Открытые файлы наследуются порожденными процессами от своих родительских процессов. Фактически они являются общими. В частности, общим является положение в файле. Подробности мы оставим для дальнейшего обсуждения в разделе 9.1.1.2 «Разделение дескрипторов файлов».
Поскольку программы могут наследовать другие файлы, иногда вы можете увидеть программы, которые закрывают все свои файлы, чтобы начать с «чистого состояния» В частности, типичен код наподобие этого:
Предположим, что результат
Такая оптимизация не ухудшает читаемость кода, но может быть заметна разница, особенно на медленных системах. В общем, стоит поискать случаи, когда в циклах повторно вычисляется один и тот же результат, чтобы посмотреть, нельзя ли вынести вычисление за пределы цикла. Хотя в таких случаях нужно убедиться, что вы (а) сохраняете правильность кода и (б) сохраняете его читаемость!
4.4.3. Чтение и запись
Ввод/вывод осуществляется системными вызовами
Каждая функция сделана как можно проще. Аргументами являются дескриптор открытого файла, указатель на буфер для чтения или записи данных и число читаемых или записываемых байтов.
Возвращаемое значение является числом действительно прочитанных или записанных байтов. (Это число может быть меньше запрошенного: при операции чтения это происходит, когда в файле осталось меньше
Забытые Боги
3. Серые будни
Фантастика:
эпическая фантастика
фэнтези
рейтинг книги
Матабар IX
9. Матабар
Проза:
магический реализм
рейтинг книги
Гибель гигантов
1. Столетняя трилогия
Проза:
историческая проза
рейтинг книги
Том 11. Былое и думы. Часть 6-8
11. Собрание сочинений в тридцати томах
Проза:
русская классическая проза
рейтинг книги
Стрелок. Извлечение троих. Бесплодные земли
Фантастика:
фэнтези
рейтинг книги
Медная шкатулка (сборник)
Проза:
современная проза
рейтинг книги
Приручить королевича
Любовные романы:
любовно-фантастические романы
рейтинг книги
В поисках христиан и пряностей
Страницы истории
Научно-образовательная:
история
рейтинг книги
Точка Бифуркации V
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Ночные бродяги
Тайны забытого острова
Детские:
детская фантастика
рейтинг книги
Спальня, в которой ты, он и я
1. Французская трилогия
Любовные романы:
эро литература
рейтинг книги
Собрание сочинений
Детские:
прочая детская литература
рейтинг книги