Операционная система UNIX. Руководство программиста

     

Классификация системных вызовов и библиотечных функций


Системные вызовы можно достаточно естественно разделить на следующие категории:

  • Доступ к файлам.
  • Действия с файлами и каталогами.
  • Управление процессами.
  • Управление окружением и получение информации о его состоянии.

Библиотечные функции можно разделить на категории в зависимости от разделов Справочника программиста, в которых находятся их описания. Однако первая часть раздела 3 (3C и 3S) содержит описания весьма большого числа функций, и имеет смысл провести дальнейшую классификацию.

  • Функции подкласса 3S предоставляют средства эффективного буферизованного ввода/вывода.
  • Функции подкласса 3C выполняют различные задачи. Их объединяет то, что они хранятся в библиотеке libc.a. Можно разделить эти функции на следующие группы:

  • Действия с цепочками символов.
  • Преобразование символов.
  • Классификация символов.
  • Управление окружением.
  • Управление памятью.



В следующей таблице приведен список функций стандартного ввода/вывода. Все они описаны в разделе 3 Справочника программиста. В Справочнике часто в одной статье описывается не одна, а несколько связанных функций. В таблице приводится соответствие названий статей и описываемых в них функций: в левой колонке находится название статьи, а все остальные имена в данной стро- ке - это имена функций, описываемых в статье.

Имена функций Назначение
fclose fflush Закрыть поток или вытолкнуть его буфера.
ferror feof clearerr fileno  Опрос состояния потока.
fopen freopen fdopen  Открыть поток.
fread fwrite  Двоичный ввод/вывод.
fseek rewind ftell  Установка текущей позиции потока.
getc getchar fgetc getw  Считывание символа или слова из потока.
gets fgets  Считывание цепочки символов из потока.
popen pclose  Создание и ликвидация канала между программой и командой.
printf fprintf sprintf  Вывод с преобразованием по формату.
putc putchar fputc putw  Запись в поток символа или слова.
puts fputs  Запись в поток цепочки символов.
scanf fscanf sscanf  Ввод с преобразованием по формату.
setbuf setvbuf  Назначение буферов для потока.
system  Выполнение команды shell'а.
tmpfile  Создание временного файла.
tmpnam tempnam  Создание имен временных файлов.
ungetc  Вставка символа в поток ввода.
vprintf vfprintf vsprintf  Форматный вывод списка аргументов, заданного по правилам varargs.
<
При использовании всех функций, перечисленных в этой таблице, необходимо включить в программу оператор

#include <stdio.h>

Следующая таблица содержит список функций, предназначенных для обработки цепочек символов. В Справочнике программиста они описаны в одной статье string(3C).

Операции над цепочками символов

Имена функций Назначение
strcat (s1, s2) Добавить копию s2 к концу s1.
strncat (s1, s2, n) Добавить n символов из s2 к концу s1.
strcmp (s1, s2) Сравнить две цепочки символов. Возвращает целое число, меньшее, большее или равное нулю в зависимости от того, предшествует ли s1 лексикографически s2, следует за ней или совпадает с ней.
strncmp (s1, s2, n) Сравнить n символов из двух цепочек.
strcpy (s1, s2) Копировать символы из s2 в s1 до тех пор, пока не будет скопирован нулевой байт (\0).
strncpy (s1, s2, n) Скопировать n символов из s2 в s1. Если s2 содержит более n символов, она будет усечена, если меньше n - в s1 будут добавлены нулевые байты.
strdup (s) Возвращает указатель на новую цепочку символов, являющуюся копией s.
strchr (s, c) Возвращает указатель на первое вхождение символа c в цепочку s, или NULL, если s не содержит c.
strrchr (s, c) Возвращает указатель на последнее вхождение символа c в цепочку s, или NULL, если s не содержит c.
strlen (s) Возвращает число символов в s до ближайшего нулевого байта.
strpbrk (s1, s2) Возвращает указатель на первое вхождение в s1 какого-либо символа из s2, либо NULL, если s1 не содержит ни одного символа из s2.
strspn (s1, s2) Возвращает длину начального фрагмента s1, состоящего только из символов, содержащихся в s2.
strcspn (s1, s2) Возвращает длину начального фрагмента s1, состоящего только из символов, не содержащихся в s2.
strtok (s1, s2) Находит включение символов из s2 в s1.
При использовании всех функций, перечисленных в этой таблице, необходимо включить в программу оператор

#include <string.h>

Включаемый файл <string.h> содержит внешние описания функций обработки цепочек символов.



Следующая таблица содержит список макросов, предназначенных для классификации ASCII-символов. В Справочнике программиста они описаны в статье ctype(3C).

Классификация символов

Имена функций Назначение
isalpha (c) c - буква?
isupper (c)  c - большая буква?
islower (c)  c - малая буква?
isdigit (c)   c - цифра: [0-9]?
isxdigit (c)  c - шестнадцатеричная цифра: [0-9], [A-F] или [a-f]?
isalnum (c)   c - алфавитно-цифровой символ (буква или цифра)?
isspace (c)   c - пробел, табуляция, возврат каретки, перевод строки, вертикальная табуляция или символ перехода к новой странице?
ispunct (c)   c - знак пунктуации (то есть не управляющий и не алфавитно-цифровой символ)?
isprint (c)   c - печатный символ? [Коды таких символов располагаются в диапазоне от 040 (пробел) до 0176 (тильда).]
isgraph (c)   c - печатный символ, но не пробел?
iscntrl (c)  c - управляющий символ (код меньше 040) или символ забоя (0177)?
isascii (c)   c является ASCII-символом (код меньше 0200)?
При использовании всех функций, перечисленных в этой таблице, необходимо включить в программу оператор

#include <ctype.h>

Эти функции возвращают отличное от нуля значение, если указанное в правой части таблицы условие истинно, в противном случае возвращается нуль.

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

Имена функций Назначение
ecvt fcvt gcvt  Преобразование вещественного числа в цепочку символов.
l3tol ltol3  Преобразование 3-байтного целого числа в длинное целое и обратно.
strtod atof  Преобразование цепочки символов в вещественное число двойной точности.
strtol atol atoi  Преобразование цепочки символов в целое число.
conv(3C): Преобразование символов

toupper   Функция преобразования малой буквы в большую.
_toupper  Макрос преобразования малой буквы в большую.
tolower   Функция преобразования большой буквы в малую.
_tolower  Макрос преобразования большой буквы в малую.
toascii   Обнуляет у аргумента все биты, не являющиеся частью стандартного ASCII-символа; предназначен для достижения совместимости с другими системами.
При использовании макросов из последней таблицы необходимо включить в программу оператор

#include <ctype.h>




Содержание раздела