НАЗВАНИЕ
ctime, localtime, gmtime, asctime, cftime, ascftime, tzset - преобразование даты и времени в цепочку символов
СИНТАКСИС
#include <sys/types.h>
#include <time.h>
char *ctime (clock) time_t *clock;
struct tm *localtime (clock) time_t *clock;
struct tm *gmtime (clock) time_t *clock;
char *asctime (tm) struct tm *tm;
extern long timezone;
extern int daylight;
extern char *tzname[2];
void tzset ( )
ОПИСАНИЕ
Аргументом функций ctime, localtime и gmtime служит указатель clock на значение типа time_t, описанного во включаемом файле . Это значение интерпретируется как число секунд, отсчитываемое от 00:00:00 1 января 1970г. всемирного времени. Функция ctime возвращает указатель на цепочку из 26 символов вида
Sun Jan 16 01:03:52 1987\n\0
где все поля имеют постоянную длину.
Функции localtime и gmtime возвращают указатели на "tm"-структуры, описанные ниже. Localtime вносит поправку на часовой пояс и, возможно, на летнее время; gmtime осуществляет преобразование непосредственно ко всемирному времени, используемому в системе UNIX.
Функция asctime преобразует "tm"-структуру в цепочку из 26 символов (подобную приведенной выше) и возвращает указатель на эту цепочку.
Об явления всех функций, внешних об ектов, а также "tm"-структуры содержатся во включаемом файле . Описание структуры выглядит так:
struct tm { int tm_sec; /* Секунды (0-59) */ int tm_min; /* Минуты (0-59) */ int tm_hour; /* Часы (0-23) */ int tm_mday; /* День месяца (1-31) */ int tm_mon; /* Месяц года (0-11) */ int tm_year; /* Год - 1900 */ int tm_wday; /* День недели (Воскресенье = 0) */ int tm_yday; /* День года (0-365) */ int tm_isdst; };
Отличие tm_isdst от нуля указывает на то, что используется летнее время.
Внешняя переменная timezone типа long содержит разницу в секундах между всемирным временем и местным поясным временем. Скажем, для Восточного поясного времени EST (см. ПРИМЕЧАНИЯ) эта разница составляет 5*60*60. Внешняя переменная daylight отлична от нуля тогда и только тогда, когда должно осуществляться преобразование к летнему времени в соответствии со стандартом США. Программа учитывает особенности этого преобразования в 1974, 1975 годах; при необходимости перечень таких лет может быть расширен.
При наличии переменной окружения с именем TZ, функция asctime использует значение этой переменной для задания часового пояса, отличного от подразумеваемого. Значение TZ представляет из себя трехбуквенное название местного поясного времени (см. ПРИМЕЧАНИЯ), за которым следует число, выражающее отставание поясного времени от гринвичского в часах и далее, возможно, следует трехбуквенное название летнего времени, действующего в данном поясе. К примеру, для Нью-Джерси следует установить значение EST5EDT. Исходя из установленного TZ можно изменить значения внешних переменных timezone и daylight, а во внешнюю переменную
НАЗВАНИЕ
ecvt, fcvt, gcvt - преобразование вещественного числа в цепочку символов
СИНТАКСИС
char *ecvt (value, ndigit, decpt, sign) double value; int ndigit, *decpt, *sign;
char *fcvt (value, ndigit, decpt, sign) double value; int ndigit, *decpt, *sign;
char *gcvt (value, ndigit, buf) double value; int ndigit; char *buf;
ОПИСАНИЕ
Функция ecvt преобразует значение value в цепочку из ndigit символов, завершающуюся нулевым байтом, и возвращает указатель на нее. Старшая цифра результата равна 0 только для нулевого значения value. Младшая цифра округляется. Смещение десятичной точки относительно начала цепочки символов запоминается по адресу decpt. Если смещение отрицательно, это означает, что точка располагается слева от возвращенных цифр. Десятичная точка не включается в возвращаемую цепочку символов. Если результат отрицателен, то слово, адресуемое указателем sign, отлично от нуля, иначе - равно нулю.
Функция fcvt аналогична функции ecvt. Отличие в том, что результат округляется для вывода в формате %f (в Фортране это формат F). Количество выводимых цифр определяется аргументом ndigit.
Функция gcvt преобразует значение value в цепочку символов, завершающуюся нулевым байтом, адрес которой задан аргументом buf, и выдает buf в качестве результата. Если возможно, функция помещает в цепочку символов ndigit значащих цифр в F-формате Фортрана, в противном случае используется E-формат. В любом случае результат готов для печати. Знак минус, если он есть, или десятичная точка включаются прямо в возвращаемую цепочку символов. Завершающие нули подавляются.
СМ. ТАКЖЕ
.
СЮРПРИЗЫ
Значения, возвращаемые функциями ecvt и fcvt, указывают на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова.
НАЗВАНИЕ
gamma - логарифм гамма-функции
СИНТАКСИС
#include <math.h>
double gamma (x) double x;
extern int signgam;
ОПИСАНИЕ
Функция gamma возвращает значение натурального логарифма от абсолютной величины соответствующего значения гамма-функции, то есть ln(|Г(x)|), где Г(x) определяется как интеграл по t функции
exp(-t) * t^(x-1)
в пределах от 0 до x. Знак Г(x) передается во внешней целочисленной переменной signgam. Аргумент x может быть и неположительным числом.
Следующий фрагмент программы на языке C может быть использован для вычисления Г:
if ((y = gamma(x)) >= LN_MAXDOUBLE) error(); y = signgam * exp(y);
где LN_MAXDOUBLE - минимальное значение, которое обуславливает выдачу диагностики о выходе за допустимые пределы значений для функции и которое определено во включаемом файле <values.h>.
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
При неотрицательных аргументах функция gamma возвращает значение HUGE [см. ], а внешней переменной errno присваивается значение EDOM. В стандартный протокол будет выдано сообщение о попадании в точку сингулярности.
Если представление корректного результирующего значения приводит к переполнению, то функция gamma возвращает значение HUGE, а переменной errno присваивается значение ERANGE.
Изложенная процедура обработки ошибок может быть изменена посредством функции .
НАЗВАНИЕ
gdev - фильтры для графических устройств
СИНТАКСИС
фильтр [опция ...] [метафайл ...]
ОПИСАНИЕ
Ниже приводится описание фильтров для графических устройств. Фильтры находятся в каталоге /usr/bin/graf [см. ]. Под метафайлом понимается файл в формате GPS [см. ]. Если метафайлы не указаны, информация читается со стандартного ввода. Результаты записываются на стандартный вывод.
erase Команда erase посылает комбинацию символов для очистки экрана терминалов серии Tektronix 4010.
hardcopy Команда hardcopy, при использовании дисплеев Tektronix с устройством для получения твердой копии, создает ко- пию экрана на этом устройстве.
hpd [-cномер_набора_символов] [-pномер_пера] [-rномер_области] [-sнаклон] [-u] [-xdгоризонтальное_смещение] [-xvширина] [-ydвертикальное_смещение] [-yvвысота] [метафайл ...] Команда hpd транслирует указанные метафайлы в команды графопостроителя Hewlett-Packard 7221A. Окно отображения вычисляется по максимальной и минимальной координатам точек в метафайлах, если не заданы опции -u или -r.
Смысл опций команды hpd:
-cномер_набора_символов Устанавливается набор символов с номером от 0 до 5.
-pномер_пера Выбирается перо с заданным номером, от 1 до 4.
-rномер_области Окно выбирается на области с заданным номером, от 1 до 25.
-sнаклон Устанавливается заданный наклон символов (в градусах, считая по часовой стрелке от вертикали).
-u Окно на всем пространстве.
-xdгоризонтальное_смещение Установка горизонтального_смещения левого нижнего угла области просмотра (в дюймах).
-xvширина Установка ширины области просмотра (в дюймах).
-ydвертикальное_смещение Установка вертикального_смещения левого нижнего угла области просмотра (в дюймах).
-yvвысота Установка высоты области просмотра (в дюймах).
td [-e] [-rномер_области] [-u] [метафайл ...] Команда td транслирует указанные метафайлы в команды терминалов серии Tektronix 4010. Окно отображения вычисляется по максимальной и минимальной координатам точек в метафайлах, если не заданы опции -u или -r.
Смысл опций команды td:
-e Не очищать экран перед началом рисования.
-rномер_области Окно выбирается на области с заданным номером, от 1 до 25.
-u Окно на всем пространстве.
tekset Команда tekset посылает символы на терминал Tektronix, чтобы очистить экран дисплея, установить алфавитно-цифровой режим и самый мелкий шрифт.
СМ. ТАКЖЕ
ged(1G), , .
gps(4) в Справочнике программиста.
НАЗВАНИЕ
ged - графический редактор
СИНТАКСИС
/usr/bin/graf/ged [-e] [-rномер_области] [-R] [-u] [метафайл ...]
ОПИСАНИЕ
Ged - интерактивный графический редактор, позволяющий визуализировать, создавать и редактировать метафайлы [см. ] на терминалах серии Tektronix 4010. Если метафайлы заданы, ged считывает их во внутренний дисплейный буфер и визуализирует его. После этого содержимое буфера можно редактировать. Если метафайл не задан или задан как -, информация читается со стандартного ввода.
В командной строке допускаются следующие опции:
Метафайл содержит графические объекты трех видов: отрезки прямых, дуги и тексты. Дуги и прямые имеют начальную (опорную) точку и несколько (быть может, 0) вспомогательных точек. Текст имеет только опорную точку. объекты располагаются на декартовой плоскости (в "мире"). Протяженность каждой из осей - 64K (от -32K до +32K) точек (мировых_единиц). Мир разделен на 25 равных квадратных областей. Области располагаются в пяти полосах, по пять квадратов в полосе. Левый нижний квадрат имеет номер 1, правый верхний - 25.
Ged проецирует прямоугольные участки "мира", называемые окнами, на экран дисплея. Окна позволяют рассматривать картинки с различным распложением относительно мира и различным увеличением; мировое_окно - это окно с минимальным увеличением, которое позволяет рассматривать весь мир. Начальное_окно - окно, которое позволяет вывести буфер дисплея, полностью вместив его на экран.
Команды
Команды графического редактора вводятся покомпонентно. Обычно каждый компонент заканчивается символом возврата каретки. Пока не введен последний возврат каретки, команда может быть отменена клавишей прерывания. Вводимая строка компонента может редактироваться средствами shell'а. Подсказка * показывает, что ged ожидает первого компонента.
Команда может включать в себя следующие компоненты:
Командная_строка Командная_строка состоит из имени команды и следующих за ней аргументов. Имя команды задается одним символом. Аргументы команды - это либо опции, либо имя файла. Опции предваряются символом -.
Текст Текст - последовательность символов, заканчивающаяся неэкранированным возвратом каретки. Длина текста не может быть больше 120 строк.
Точки Точки - последовательность одной или более точек на экране (не более 30), указанные перекрестием или заданные именами. Подсказка для ввода точек - появление перекрестия. В этом случае, набирая:
пробел Вводим точку с текущими координатами. Точка получает номер.
$n Вводим точку, которая ранее уже была задана номером n.
>X Помечаем последнюю введенную точку заглавной буквой X.
$X Вводим точку с именем X.
. Устанавливаем предыдущие точки как текущие точки. В начале команды предыдущие точки - положения, полученные предыдущей командой.
= Выводим предыдущие точки.
$.n Вводим точку с номером n из числа предыдущих точек.
# Стираем последнюю введенную точку.
@ Стираем все введенные точки.
Центр Центр задается нажатием возврата каретки или операцией $. Помечается звездочкой.
Целевая_точка Целевая_точка задается нажатием возврата каретки или операцией $.
Краткое изложение команд В приводимых ниже командах и опциях нужно указывать только первую букву. Скобки [ ] окружают необязательные аргументы, скобки ( ) используются для группировки, слово "или" разделяет альтернативы.
Команды создания
Arc [-echo,style,weight] точки Box [-echo,style,weight] точки Circle [-echo,style,weight] точки Hardware [-echo] текст точки Lines [-echo,style,weight] точки Text [-angle,echo,height,mid_point,right_point,text,weight] текст точки
Команды редактирования
Delete (-(universe или view) или точки) Edit [-angle,echo,height,style,weight] (-(universe или view) или точки) Copy [-echo,points,x] точки центр целевая_точка Move [-echo,points,x] точки центр целевая_точка Rotate [-angle,echo,kopy,x] точки центр целевая_точка Scale [-echo,factor,kopy,x] точки центр целевая_точка
Команды просмотра
coordinates точки erase new_display object_handles (-(universe или view) или точки) point_handles (-(labelled_points или universe или view) или точки) view (-(home или universe или region) или [-x] центр целевая_точка) x [-view] точки zoom [-out] точки
Прочие команды
quit или Quit read [-angle,echo,height,mid_point,right_point,text,weight] имя_файла [целевая_точка] set [-angle,echo,factor,height,kopy,mid_point,points,right_point, style,text,weight,x] write имя_файла !команда ?
Опции
Опции определяют параметры, используемые для создания, редактирования и визуализации графических об ектов. Если параметр, используемый командой, не указан как опция, параметру будет присвоено значение по умолчанию (см. ниже). Формат опций:
-опция[,опция] ...
где опция - это символ[значение]. Частный случай опции - это флаг, который может принимать лишь значения истина или ложь (обозначается, соответственно, как + и -). Если значение флага не задано, подразумевается истина.
Опции объекта
anglen Угол в n градусов.
echo Если истина, отображать добавления к дисплейному буферу.
factorn Масштабный множитель в n процентов.
heightn Высота текста n мировых_единиц (0 copy Если истина, выполняется копирование, а не пересылка данных.
mid_point Если истина, расположение текста задает его середина.
points Если истина, операции выполняются над точками; иначе - над об ектами.
right_point Если истина, расположение текста задает его правый конец.
styleтип Устанавливает тип линии:
so сплошная do точечная dd штрихпунктирная da пунктирная ld длинно-пунктирная
text Если ложь, тексты обводятся, но не рисуются.
weightтип Устанавливает толщину линии:
n тонкая m средняя b толстая
Опции области
home Обозначает "начальное" окно.
out Уменьшает увеличение.
regionn Обозначает область с номером n.
universe Обозначает окно на весь "мир".
view Обозначает те объекты, которые визуализируются в текущий момент.
x Устанавливает центр текущей области.
Описание команд
Команды создания
Arc, Lines Команды создания дуг и ломаных ведут себя похожим образом. Каждая содержит командную_строку, за которой следуют точки. Первая точка является опорной, последующие - вспомогательными. Ломаная связывает точки в порядке перечисления. Дуги в настоящий момент создаются как дуги окружностей, по трем точкам; сплайны будут добавлены позднее.
Box, Circle Команды создания прямоугольников и окружностей являются частными случаями двух предыдущих команд. Прямоугольники создаются со сторонами, параллельными координатным осям "мира". Диагональ прямоугольника будет связывать первую введенную точку с последней. Первая точка - опорная. Остальные вершины прямоугольника становятся вспомогательными. Окружность создается с центром в точке с номером ноль и проходит через последнюю точку.
Text, Hardware Команды генерации текстов. Каждая состоит из командой_строки, текста и точек. Команда Text генерирует программно-реализованные символы. Каждая строка текста трактуется как отдельный текстовый об ект. Первая точка является опорной для первой строки текста. Команда Hardware посылает символы текста на терминал без всякой предварительной обработки.
Команды редактирования
Команды редактирования оперируют с порциями дисплейного буфера, называемые областями определения. Такая порция соответствует области, задаваемой либо при помощи опции области, либо интерактивно. Если опция области определения не указана, периметр области определения указывается точками. Если точки не заданы, то область определения строится вокруг текущего положения. Такое соглашение полезно для доступа к отдельным точкам. дельной точки. Область определения, заданная точками, обрамляется пунктирными линиями.
Delete Команда удаления. Удаляются все объекты, чьи опорные точки лежат внутри области определения. Когда указана опция universe, удаляются все объекты и очищается экран.
Edit Редактирование параметров об ектов, принадлежащих области определения. Могут редактироваться следующие параметры: угол, высота, тип и ширина линий.
Copy, Move Копирование (передвижение) опорных и/или вспомогательных точек внутри области определения за счет сдвига от центра до целевой_точки.
Rotate Поворот об ектов, принадлежащих области определения, вокруг центра. Если флаг копирования равен истине, происходит копирование, а не перемещение об ектов.
Scale Масштабирование об ектов, чьи опорные точки принадлежат области. Выполняется относительно центра на заданное число процентов. Если флаг копирования равен истине, происходит копирование, а не перемещение об ектов.
Команды просмотра
coordinates Выдать мировые и экранные координаты точек.
erase Очистить экран (но не дисплейный буфер).
new_display Перерисовка: сначала очищается экран, затем рисуется дисплейный буфер.
object_handles, point_handles Опорные и/или вспомогательные точки, принадлежащие области определения, помечаются буквами O или P соответственно. Команда point_handles помечает только поименованные вспомогательные точки, если флаг labelled_points равен истине.
view Перемещение окна, при котором мировая точка, соответствующая центру, совмещается с точкой экрана, соответствующей целевой_точке. Опции home, universe, и region выводят отдельные окна "мира".
x Показывает центр области определения. Опция view указывает центр экрана.
zoom Уменьшает или увеличивает размеры окна, связанного с областью определения. При увеличении окно охватывает область определения, при уменьшении окно вписывается в область определения.
Прочие команды
quit, Quit Закончить работу с редактором ged. Если дисплейный буфер не был записан со времени последней модификации, то в ответ на команду Quit запрашивается подтверждение.
read Считать содержимое файла. Если файл является метафайлом он считывается напрямую. Если же файл содержит текст, то он будет преобразован в текстовые объекты. Первая строка текстового файла начинается в целевой_точке.
set Если заданы опции, выполняется переустановка значений параметров; в противном случае выдаются текущие значения.
write Вывести содержимое дисплейного буфера в файл.
! Выполнение команды операционной системы.
? Получения справки о командах графического редактора.
СМ. ТАКЖЕ
gdev(1G), , .
gps(4) в Справочнике программиста.
НАЗВАНИЕ
get - извлечение версии из SCCS-файла
СИНТАКСИС
get [-rс_идентификатор] [-cкон_время] [-iсписок] [-xсписок] [-k] [-e] [-l[p]] [-p] [-m] [-n] [-s] [-b] [-g] [-t] [-wтекст] [-aпорядковый_номер] файл ...
ОПИСАНИЕ
Команда get генерирует текстовый файл из указанных SCCS-файлов в соответствии с опциями. Опции могут задаваться в любом порядке и относятся ко всем указанным SCCS-файлам. Если указано имя каталога, get обрабатывает все файлы в этом каталоге, начинающиеся с s.; файлы, к которым нет доступа на чтение, игнорируются без дополнительных сообщений. Если указано имя -, происходит чтение со стандартного ввода; каждая строка при этом трактуется, как имя SCCS-файла, подлежащего обработке. Файлы, не начинающиеся с s., и файлы, к которым нет доступа на чтение, также игнорируются без дополнительных сообщений.
Сгенерированный текст обычно записывается в так называемый g-файл. Имя g-файла получается путем удаления начальных s. из имени SCCS-файла (см. ниже).
Каждая опция об ясняется ниже для одного обрабатываемого файла; при нескольких файлах она применяется к каждому из них.
-rс_идентификатор Извлечь из SCCS-файла версию по указанному с_иден- тификатору (SID, SCCS IDentification string). Таблица 1 (ниже) показывает для наиболее распространенных случаев, как зависит извлекаемая версия от указанного с_идентификатора, а также каким будет с_идентификатор новой версии после создания командой (если в get использована опция -e).
-cкон_время Кон_время имеет формат:
гг[мм[дд[чч[мм[сс]]]]]
Не включать в генерируемый файл версии SCCS-файла, которые созданы после указанного кон_времени. Опущенные цифры по умолчанию имеют максимально возможные значения, например -c7502 эквивалентно -c750228235959. Произвольное число любых нецифровых символов может разделять пары цифр, например можно задать кон_время в виде "-c77/2/2 9:22:25". Это позволяет использовать ключевые слова %E% и %U% (см. ниже) для вложенных get, например, в сеансе работы с командой :
~!get "-c%E% %U%" s.file
-e Показывает, что команда get делается для редактирования или последующего добавления версии в SCCS-файл с помощью . Если для какой-либо версии в SCCS-файле сделан get, последующие версии с тем же с_идентификатором отвергаются до тех пор, пока не будет выполнена команда delta [или в SCCS-файле не будет установлен флаг j, см. ]. Допускается использование команды get -e одновременно для разных с_идентификаторов.
Если сгенерированный командой get с опцией -e g-файл случайно испорчен, он может быть перегенерирован командой get с опцией -k вместо -e.
Ограничение прав доступа к версиям SCCS-файла организуется с помощью запоминаемого в файле максимального и минимального номера версии, доступной для редактирования, и списка пользователей, которые могут редактировать версии [см. ]. При использовании опции -e все эти права проверяются.
-b Используется вместе в опцией -e для указания, что новая версия должна начинать ответвление, как показано в таблице 1. Опция -b игнорируется, если в SCCS-файле отсутствует флаг b [см. ] или извлекаемая версия не является терминальной (то есть у нее есть преемники в дереве версий SCCS-файла). Для нетерминальных версий всегда будет строиться ответвление.
-iсписок Список версий, которые должны быть включены при генерации файла. Список имеет следующий синтаксис:
::= | ,
::= СИД | СИД-СИД
где СИД - сокращение от с_идентификатор - может иметь любой формат, упомянутый в колонке "Указанный СИД" таблицы 1. Интерпретация значений показана в колонке "Извлеченный СИД" таблицы 1.
-xсписок Список версий, которые не должны быть включены при генерации файла. Формат списка см. в описании опции -i.
-k Подавить при генерации подстановку значений вместо ключевых слов (см. ниже). Опция -k подразумевается опцией -e.
-l[p] Выдать сведения о версиях в l-файл. Если используется опция -lp, l-файл не создается, все сведения пишутся на стандартный вывод. Формат l-файла описан ниже.
-p Текст, извлеченный из SCCS-файла, пишется на стандартный вывод. G-файл не создается. Все то, что обычно пишется на стандартный вывод, при этом, если указана опция -s, не выводится никуда (исчезает), а если опция -s опущена, переадресуется в стандартный протокол.
-s Подавить выдачу на стандартный вывод. Выдача в стандартный протокол (в том числе сообщения о фатальных ошибках) при этом не подавляется.
-m Перед каждой строкой, извлеченной из SCCS-файла, помещается с_идентификатор версии, в которой она появилась, в следующем формате:
с_идентификатор табуляция строка
-n Перед каждой строкой, извлеченной из SCCS-файла, помещается значение ключевого слова %M% (см. ниже) в соответствии с форматом:
%M% табуляция строка
Если опции -m и -n используются одновременно, формат будет таким:
%M% табуляция с_идентификатор табуляция строка
-g Подавить генерацию g-файла. Эта опция используется для генерации l-файла или для проверки существования конкретного с_идентификатора.
-t Получить доступ к самому последнему (по времени) состоянию указанной версии (например -r1) или версии и уровню (например -r1.2).
-wтекст Подставить текст вместо всех вхождений %W% в извлекаемый файл.
-aпорядковый_номер Порядковый номер версии SCCS-файла, которая должна быть извлечена (см. ). Эта опция используется командой , пользователям ее применять не рекомендуется. Если указаны одновременно опции -r и -a, принимается опция -a. Необходимо соблюдать осторожность при одновременном использовании опций -a и -e, так как с_идентификатор создаваемой версии может оказаться не тем, который ожидается. Для управления с_идентификатором создаваемой версии можно использовать одновременно опции -a, -e и -r.
Для каждого обрабатываемого файла команда get выводит на стандартный вывод с_идентификатор и количество строк, извлеченных из SCCS-файла. Если используется опция -e, вслед за с_идентификатором, к которому получен доступ, следует вновь созданный с_идентификатор. Если в команде указано более одного файла, указан каталог или стандартный ввод, перед обработкой каждого файла выводится его имя с предшествующим переводом строки. Если используется опция -i, выводятся включаемые версии, за которыми следует слово Included. Если используется опция -x, выводятся исключаемые версии, за которыми следует слово Excluded.
Таблица 1. Определение с_идентификатора (СИД)
Идентифицирующие ключевые слова
Идентифицирующая информация вставляется в извлекаемый текст вместо идентифицирующих ключевых слов. В текстах, сохраняемых в SCCS-файлах, могут использоваться следующие ключевые слова:
<
/p>
Команда get создает несколько дополнительных файлов: g-файл, l-файл, p-файл и z-файл. Имена дополнительных файлов формируются из имени SCCS-файла: простое имя SCCS-файла должно начинаться с s.; имя g-файла получается путем удаления s., имена остальных файлов строятся путем замены первого символа s соответственно на l, p, z. Например, для файла s.xyz.c, дополнительные файлы будут иметь имена соответственно xyz.c, l.xyz.c, p.xyz.c и z.xyz.c.
G-файл, содержащий сгенерированный текст, создается в текущем каталоге (если не используется опция -p). G-файл создается даже если из SCCS-файла get не извлек ни одной строки. За идентификатор владельца берется реальный идентификатор пользователя. Если используется опция -k, права доступа к файлу устанавливаются равными 644, иначе 444. Реальный идентификатор пользователя должен быть таким, чтобы позволить запись в текущий каталог.
L-файл содержит таблицу, показывающую, какие версии были использованы при генерации текста. L-файл создается в текущем каталоге при использовании опции -l; его права доступа 444, идентификатор владельца равен реальному идентификатору пользователя. Реальный идентификатор пользователя должен быть таким, чтобы позволить запись в текущий каталог.
Строки l-файла имеют следующий формат:
Пробел, если версия использована; * в противном случае. Пробел, если версия использована или проигнорирована; *, если версия не использована и не проигнорирована. Код причины, почему версия была или не была использована:
I: Включена по опции -i. X: Исключена по опции -x. C: Время не соответствует указанному в опции -c.
Пробел. С_идентификатор. Табуляция. Дата и время создания (гг/мм/дд чч:мм:сс). Пробел. Входное имя пользователя, создавшего версию.
Комментарии и номер причины модификации выводятся на следующих строках, перед ними один знак табуляции. Каждая запись заканчивается пустой строкой.
P-файл используется для передачи информации от get с опцией -e к delta. Его содержимое также используется для предотвращения последующего выполнения get -e с тем же с_идентификатором, пока не будет выполнена команда delta или в SCCS-файле не будет установлен флаг j, [см. admin(1)]. P-файл создается в каталоге, содержащем SCCS-файл, действующий идентификатор пользователя должен быть таким, чтобы разрешить запись в этот каталог. Права доступа к файлу равны 644, идентификатор владельца равен действующему идентификатору пользователя. Формат p-файла следующий: извлеченный с_идентификатор, пробел, новый с_идентификатор, пробел, имя, соответствующее реальному идентификатору пользователя, пробел, дата и время выполнения get, пробел, аргумент опции -i (если есть), пробел, аргумент опции -x (если есть), перевод строки. В p-файле может быть различное число строк; никакие две из них не могут содержать один и тот же новый с_идентификатор.
Z-файл служит как файл-замок для защиты от одновременных изменений. Его содержимое - двоичный двухбайтный идентификатор процесса get, создавшего z-файл. Z-файл создается в каталоге, содержащем SCCS-файл, на время выполнения get. Права доступа к z-файлу 444, остальное то же, что и для p-файла.
ФАЙЛЫ
g-файл Существует до выполнения команды delta; удаляется после ее завершения. p-файл Существует до выполнения команды delta; может остаться после ее завершения. q-файл Создается во время выполнения команды delta; удаляется после ее завершения. x-файл Создается во время выполнения команды delta; переименовывается в SCCS-файл после ее завершения. z-файл Создается во время выполнения команды delta; удаляется также во время ее вы- полнения. d-файл Создается во время выполнения команды delta; удаляется после ее завершения. /usr/bin/bdiff Программа для выявления различий между "извлеченным" и g-файлом.
СМ. ТАКЖЕ
admin(1), , , , . sccsfile(4) в Справочнике программиста.
ДИАГНОСТИКА
Для раз яснений пользуйтесь командой .
СЮРПРИЗЫ
Если действующий идентификатор пользователя позволяет запись (явно или неявно) в каталог, содержащий SCCS-файлы, а реальный идентификатор пользователя этого не позволяет, то при использовании опции -e в команде get может быть указано только одно имя файла.
НАЗВАНИЕ
getc, getchar, fgetc, getw - считывание символа или слова из потока
СИНТАКСИС
#include <stdio.h>
int getc (stream) FILE *stream;
int getchar ( )
int fgetc (stream) FILE *stream;
int getw (stream) FILE *stream;
ОПИСАНИЕ
Макрос getc выдает в виде целого числа следующий символ (байт) из указанного потока ввода stream и перемещает текущую позицию (если она определена) на один символ вперед. Макрос getchar эквивалентен getc (stdin).
Функция fgetc действует аналогично getc, но реализована именно как функция, а не макрос. Функция fgetc выполняется медленнее, чем getc, но обращение к ней требует меньше памяти, и ее имя может передаваться в качестве аргумента функции.
Функция getw выдает в виде целого числа следующее слово (для большинства компьютеров это четыре байта) из указанного потока ввода stream и перемещает текущую позицию (если она определена) на слово вперед. Никакого специального выравнивания текущей позиции (например, по границе слова) не предполагается и не производится.
СМ. ТАКЖЕ
, , , , , , , .
ДИАГНОСТИКА
При достижении конца файла или при возникновении ошибки возвращается константа EOF. Чтобы различать эти ситуации, следует использовать функцию .
ОГРАНИЧЕНИЕ
Реализация макроса getc такова, что значение аргумента stream вычисляется несколько раз. Поэтому, например, обращение getc(*f++) бессмысленно. В подобных случаях следует пользоваться функцией fgetc.
НАЗВАНИЕ
getcwd - получение маршрутного имени текущего каталога
СИНТАКСИС
char *getcwd (buf, size) char *buf; int size;
ОПИСАНИЕ
Функция getcwd возвращает указатель на маршрутное имя текущего каталога. Значение size должно по крайней мере на два превосходить длину маршрутного имени.
Если аргумент buf равен NULL, то getcwd получает size байт памяти с помощью функции . В этом случае указатель, возвращаемый getcwd, может впоследствии использоваться как аргумент функции free.
В реализации getcwd используется функция для направления вывода команды в нужную область памяти.
ПРИМЕР
void exit (), perror (); ... if ((cwd = getcwd ((char*) NULL, 64)) == NULL) { perror ("pwd"); ; } printf ("%s\n", cwd);
СМ. ТАКЖЕ
, .
в Справочнике пользователя.
ДИАГНОСТИКА
При неудачном завершении функция getcwd возвращает пустой указатель (NULL), а переменной errno присваивается код ошибки. Это происходит, если значение size недостаточно велико, или произошла ошибка при вызове функций нижнего уровня.
НАЗВАНИЕ
getdents - чтение элементов каталога и преобразование в системно-независимый формат
СИНТАКСИС
#include <sys/dirent.h>
int getdents (fildes, buf, nbyte) int fildes; char *buf; unsigned nbyte;
ОПИСАНИЕ
Аргумент fildes - это дескриптор файла, полученный от системного вызова или .
Системный вызов пытается прочитать nbyte байт из каталога, ассоциированного с дескриптором fildes, переформатировать их в не зависящие от типа файловой системы элементы каталога и поместить результат в буфер, заданный указателем buf. Так как не зависящие от типа файловой системы элементы каталога имеют переменную длину, в большинстве случаев фактическое число возвращенных байт будет строго меньше, чем nbyte.
Не зависящий от типа файловой системы формат элемента каталога задается структурой dirent. Она описана в .
При работе с устройствами, допускающими позиционирование, чтение начинается с позиции в файле, заданной указателем файла, соответствующего дескриптору fildes. После завершения системного вызова getdents указатель файла получает приращение и указывает на следующий элемент каталога.
Данный системный вызов был разработан для реализации функции [см. ]; не следует использовать его для других целей.
Системный вызов getdents завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EBADF] Аргумент fildes не является корректным дескриптором файла, открытого на чтение. [EFAULT] Аргумент buf указывает за пределы отведенного процессу адресного пространства. [EINVAL] Значение аргумента nbyte меньше длины одного элемента каталога. [ENOENT] Текущий указатель файла для каталога установлен не на корректный элемент. [ENOLINK] Аргумент fildes указывает на удаленный компьютер, связи с которым в данный момент нет. [ENOTDIR] Дескриптор fildes ассоциирован не с каталогом. [EIO] Во время доступа к файловой системе произошла ошибка ввода/вывода.
СМ. ТАКЖЕ
, .
ДИАГНОСТИКА
При успешном завершении возвращается неотрицательное целое число, равное количеству фактически прочитанных байт. Значение 0 обозначает, что был достигнут конец каталога. В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
НАЗВАНИЕ
getdomainname, setdomainname - получить/установить имя текущего домена
СИНТАКСИС
getdomainname(name,namelen) char *name; int namelen;
setdomainname(name,namelen) char *name; int namelen;
ОПИСАНИЕ
Функция getdomainname возвращает имя домена для текущего процессора, ранее установленное функцией setdomainname. Параметр namelen описывает размер массива name. Возвращаемое имя дополняется пустыми символами.
Функция setdomainname присваивает домену главной машины имя name, имеющее длину namelen. Вызов этой функции доступен только суперпользователю и обычно используется только при начальной загрузке системы. Назначение доменов состоит в создании видимости двух работающих сетей, объединяемых общим host-именем. Различие между сетями проводится по имени домена.
Возвращаемое значение:
В случае успеха возвращается нулевое значение. В противном случае возвращается -1 и код ошибки, запоминаемый в глобальной переменной errno.
ОШИБКИ
ЗАМЕЧАНИЯ
Длина имени домена ограничена 64 символами.
НАЗВАНИЕ
getenv - получение значения переменной окружения
СИНТАКСИС
char *getenv (name) char *name;
ОПИСАНИЕ
Пусть аргумент name указывает на цепочку символов имя. Функция getenv просматривает список переменных окружения [см. ] в поисках цепочки вида имя=значение и возвращает указатель на значение в текущем окружении, если такая цепочка обнаружена, и пустой указатель - в противном случае.
СМ. ТАКЖЕ
, , .
НАЗВАНИЕ
getgrent, getgrgid, getgrnam, setgrent, endgrent, fgetgrent - получение информации из файла групп
СИНТАКСИС
#include <grp.h>
struct group *getgrent ( )
struct group *getgrgid (gid) int gid;
struct group *getgrnam (name) char *name;
void setgrent ( )
void endgrent ( )
struct group *fgetgrent (f) FILE *f;
ОПИСАНИЕ
Каждая из функций getgrent, getgrgid и getgrnam возвращает указатель на структуру, содержащую отдельные поля из строки файла /etc/group. Эта структура описана во включаемом файле :
struct group { char *gr_name; /* Имя группы */ char *gr_passwd; /* Зашифрованный пароль группы */ int gr_gid; /* Числовой идентификатор группы */ char **gr_mem; /* Вектор указателей на имена членов группы */ };
При первом обращении к функции getgrent возвращается указатель на структуру, содержащую данные из первой строки файла групп. При каждом следующем обращении возвращается указатель на структуру, содержащую данные из следующей строки файла. Таким образом, эта функция может использоваться для поиска нужной информации в файле /etc/group.
Функция getgrgid просматривает строки файла групп, начиная с первой, до тех пор, пока не будет найдена группа, числовой идентификатор которой совпадает с аргументом gid. Результатом функции является указатель на структуру с информацией об этой группе.
Функция getgrnam производит поиск группы с именем, совпадающим с аргументом name, и возвращает указатель на структуру с информацией об этой группе. Если во время чтения будет достигнут конец файла или будет обнаружена ошибка, то перечисленные функции возвращают пустой указатель NULL.
Функция setgrent служит для позиционирования на начало файла групп, чтобы можно было осуществить повторный просмотр.
Функция endgrent используется для закрытия файла /etc/ group по окончании обработки.
Функция fgetgrent действует аналогично getgrent, но информация выбирается не из файла /etc/group, а из потока ввода f, содержимое которого имеет формат файла групп.
ФАЙЛЫ
/etc/group
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
В случае ошибки или достижения конца файла описанные функции возвращают NULL.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции используют стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод.
ОГРАНИЧЕНИЯ
Значения, возвращаемые описанными функциями, указывают на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова. Поэтому, если необходимо сохранить полученную с помощью функций информацию, следует скопировать ее.
НАЗВАНИЕ
gethostent, gethostbyaddr, gethostbyname, sethostent, endhostent - получить сведения о главной сетевой машине
СИНТАКСИС
#include <netdb.h>
struct hostent *gethostent()
struct hostent *gethostbyname(name) char *name;
struct hostent *gethostbyaddr(addr,len,type) char *addr; int len,type;
sethostent(stayopen) int stayopen
endhostent()
ОПИСАНИЕ
Функции gethostent, gethostbyname и gethostbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в главной сетевой БД /etc/hosts:
struct hostent { char *h_name; /* официальное host-имя */ char **h_aliases; /* список псевдонимов */ int h_addrtype; /* тип адреса */ int h_length; /* длина адреса */ char *h_addr; /* адрес */ };
ЭЛЕМЕНТЫ СТРУКТУРЫ
Функция gethostent считывает следующую строку файла, в случае необходимости открывая этот файл.
Функция sethostent открывает и переходит к началу файла. Если флаг stayopen имеет ненулевое значение, главная БД не будет закрываться после каждого вызова функции gethostent.
Функция endhostent закрывает файл.
Функции gethostbyname и gethostbyaddr последовательно просматривают файл с самого начала в поисках имени или адреса главной машины.
ФАЙЛЫ
/etc/hosts
ДИАГНОСТИКА
По достижении конца файла или в случае появления ошибки возвращается нулевой указатель.
ЗАМЕЧАНИЯ
Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать. Адрес может иметь только формат Internet.
НАЗВАНИЕ
gethostent, gethostbyaddr, gethostbyname, sethostent, endhostent - получить сведения о главной сетевой машине
СИНТАКСИС
#include <netdb.h>
struct hostent *gethostent()
struct hostent *gethostbyname(name) char *name;
struct hostent *gethostbyaddr(addr,len,type) char *addr; int len,type;
sethostent(stayopen) int stayopen
endhostent()
ОПИСАНИЕ
Функции gethostent, gethostbyname и gethostbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в главной сетевой БД /etc/hosts:
struct hostent { char *h_name; /* официальное host-имя */ char **h_aliases; /* список псевдонимов */ int h_addrtype; /* тип адреса */ int h_length; /* длина адреса */ char *h_addr; /* адрес */ };
ЭЛЕМЕНТЫ СТРУКТУРЫ
Функция gethostent считывает следующую строку файла, в случае необходимости открывая этот файл.
Функция sethostent открывает и переходит к началу файла. Если флаг stayopen имеет ненулевое значение, главная БД не будет закрываться после каждого вызова функции gethostent.
Функция endhostent закрывает файл.
Функции gethostbyname и gethostbyaddr последовательно просматривают файл с самого начала в поисках имени или адреса главной машины.
ФАЙЛЫ
/etc/hosts
ДИАГНОСТИКА
По достижении конца файла или в случае появления ошибки возвращается нулевой указатель.
ЗАМЕЧАНИЯ
Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать. Адрес может иметь только формат Internet.
НАЗВАНИЕ
gethostent, gethostbyaddr, gethostbyname, sethostent, endhostent - получить сведения о главной сетевой машине
СИНТАКСИС
#include <netdb.h>
struct hostent *gethostent()
struct hostent *gethostbyname(name) char *name;
struct hostent *gethostbyaddr(addr,len,type) char *addr; int len,type;
sethostent(stayopen) int stayopen
endhostent()
ОПИСАНИЕ
Функции gethostent, gethostbyname и gethostbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в главной сетевой БД /etc/hosts:
struct hostent { char *h_name; /* официальное host-имя */ char **h_aliases; /* список псевдонимов */ int h_addrtype; /* тип адреса */ int h_length; /* длина адреса */ char *h_addr; /* адрес */ };
ЭЛЕМЕНТЫ СТРУКТУРЫ
Функция gethostent считывает следующую строку файла, в случае необходимости открывая этот файл.
Функция sethostent открывает и переходит к началу файла. Если флаг stayopen имеет ненулевое значение, главная БД не будет закрываться после каждого вызова функции gethostent.
Функция endhostent закрывает файл.
Функции gethostbyname и gethostbyaddr последовательно просматривают файл с самого начала в поисках имени или адреса главной машины.
ФАЙЛЫ
/etc/hosts
ДИАГНОСТИКА
По достижении конца файла или в случае появления ошибки возвращается нулевой указатель.
ЗАМЕЧАНИЯ
Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать. Адрес может иметь только формат Internet.
НАЗВАНИЕ
getlogin - получение входного имени
СИНТАКСИС
char *getlogin ( );
ОПИСАНИЕ
Функция getlogin возвращает указатель на входное имя, которое выбирается из файла /etc/utmp. Эта функция может использоваться вместе с функцией getpwnam для получения нужной информации из файла /etc/passwd в том случае, если один и тот же идентификатор разделяется несколькими пользователями с разными входными именами.
Если функция getlogin вызывается процессом, не связанным с терминалом, то возвращается пустой указатель NULL. Поэтому не всегда удается определить входное имя с помощью функций getlogin или cuserid. В этом случае следует воспользоваться функцией getpwuid.
ФАЙЛЫ
/etc/utmp
СМ. ТАКЖЕ
, , , .
ДИАГНОСТИКА
Если входное имя не найдено, результат равен NULL.
ОГРАНИЧЕНИЯ
Значение, возвращаемое функцией getlogin, указывает на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова.
НАЗВАНИЕ
getmsg - извлечение сообщения из потока, ассоциированного с псевдоустройством
СИНТАКСИС
#include <stropts.h>
int getmsg (fd, ctlptr, dataptr, flags) int fd; struct strbuf *ctlptr; struct strbuf *dataptr; int *flags;
ОПИСАНИЕ
Системный вызов getmsg извлекает сообщение из очереди чтения в истоке потока, ассоциированного с псевдоустройством [см. ], и помещает его в буфера, указанные пользователем. Сообщение может состоять из двух частей: области данных и управляющей области, которые помещаются в разные буфера (см. ниже). Семантика каждой части определяется модулем потока, породившего сообщение.
Аргумент fd задает дескриптор файла, ассоциированный с открытым потоком.
Каждый из аргументов ctlptr и dataptr является указателем на структуру типа strbuf, содержащую следующие компоненты:
int maxlen; /* Максимальная длина буфера */ int len; /* Длина извлеченной информации */ char *buf; /* Указатель на буфер */
Компонент buf указывает на буфер, в который должны быть помещены данные или управляющая информация, а maxlen задает размер буфера в байтах. Возвращаемое значение len содержит количество байт данных или управляющей информации, которое фактически было помещено в буфер, или 0, если область данных или управляющая область имеют нулевую длину, или -1, если область данных или управляющая область отсутствуют в данном сообщении.
Переменной, на которую указывает аргумент flags, могут быть присвоены два значения: 0 или RS_HIPRI (см. ниже).
Указатель ctlptr используется для извлечения управляющей области сообщения, dataptr - для извлечения области данных. Если ctlptr (или dataptr) равны NULL, или компонент maxlen равен -1, управляющая область (или область данных) не обрабатывается; она остается в очереди чтения истока, а len устанавливается равным -1. Если компонент maxlen равен 0, а управляющая область (или область данных) содержит ненулевое число байт, они остаются в очереди чтения истока, а len устанавливается равным 0. Если maxlen меньше, чем размер управляющей области (области данных), извлекается только maxlen байт. В этом случае оставшаяся часть остается в очереди чтения истока и возвращается ненулевое значение, как это описано ниже в пункте ДИАГНОСТИКА. Если информация извлекается из приоритетного сообщения, то переменная, на которую указывает аргумент flags, получит значение RS_HIPRI.
По умолчанию системный вызов getmsg извлекает из очереди чтения в истоке первое сообщение, независимо от того, является оно приоритетным или нет. Пользователь, однако, может потребовать выдачи только приоритетного сообщения, установив по адресу flags значение RS_HIPRI. В этом случае будет извлечено первое из приоритетных сообщений, стоящих в очереди, даже если перед ним находятся несколько неприоритетных.
Если не установлен режим доступа без ожидания (флаг O_NDELAY), процесс, вызвавший getmsg, откладывается до тех пор, пока сообщение указанного типа (приоритетное или любое) не появится в очереди чтения в истоке потока. Если флаг O_NDELAY установлен, а сообщения указанного типа в очереди чтения нет, getmsg завершается неудачей и присваивает переменной errno значение EAGAIN.
Если в потоке, из которого извлекается сообщение, происходит освобождение линии, то системный вызов getmsg будет нормально работать, пока очередь чтения в истоке не станет пустой. После этого getmsg присвоит 0 компонентам len тех структур, на которые указывают аргументы ctlptr и dataptr.
Системный вызов getmsg завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EAGAIN] Установлен флаг O_NDELAY, а сообщения указанного типа в очереди чтения нет. [EBADF] Аргумент fd не является корректным дескриптором открытого файла. [EBADMSG] Сообщение, которое должно читаться, не является корректным для getmsg. [EFAULT] Аргумент ctlptr, dataptr, или flags указывает за пределы отведенного процессу адресного пространства. [EINTR] Во время выполнения системного вызова перехвачен сигнал. [EINVAL] Аргумент flags имеет некорректное значение, или поток, на который ссылается fd, мультиплексируется. [ENOSTR] С дескриптором fd не ассоциирован поток.
Кроме того, системный вызов getmsg завершается неудачей, если, до обращения к getmsg, в истоке потока получено сообщение об ошибке псевдоустройства. В этом случае переменной errno присваивается значение, содержащееся в сообщении.
СМ. ТАКЖЕ
, , , , .
ДИАГНОСТИКА
При успешном завершении возвращается неотрицательное целое значение. Значение 0 означает, что все сообщение было успешно прочитано. Значение, равное MORECTL, означает, что осталась непрочитанной часть управляющей области. Значение, равное MOREDATA, означает, что осталась непрочитанной часть области данных. Значение, равное MOREDATA | MORECTL, означает, что осталась непрочитанной как часть области данных, так и часть управляющей области. Последующие вызовы getmsg позволяют извлечь остаток сообщения.
В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
ИМЯ
getopt - Выполняет синтаксический анализ командных опций.
СИНТАКСИС
set -- `getopt optstring $*`
ОПИСАНИЕ
Команда getopt используется для того, чтобы проверять и разделять опции в командных строках для последующего их синтаксического анализа процедурами интерпретатора shell. Параметр optstring является строкой распознаваемых букв опций (см. описание getopt(2)). Если за буквой следует двоеточие, то считается, что эта опция имеет аргумент, который может отделяться, а может и не отделяться от нее пустым пространством. Специальная опция -- используется для указания конца списка опций. Команда getopt будет либо сама помещать -- в аргументах в конце опций, либо распознавать эти знаки, если они используются заданным образом. Аргументы интерпретатора shell ($1 $2 ...) переустанавливаются таким образом, что каждой опции предшествует тире (-) и она входит в свой собственной аргумент интерпретатора shell; каждый аргумент опции также участвует в своем собственном аргументе интерпретатора shell.
ПРИМЕРЫ
Следующий фрагмент кода программы показывает, каким образом обрабатываются аргументы для команды, которые могут использовать опции a и b, и опцию о, для которой требуется аргумент:
set - - `getopt abo: $*` if [ $? !=0 ] then echo $USAGE exit 2 fi for i in $* do case $i in -a | -b) FLAG=$i; shift;; -o) OARG=$2; shift; shift;; - -) shift; break;; esac done
Этот код программы будет иметь вид любого из следующих эквивалентных представлений:
cmd -aoarg file file cmd -a -o arg file file cmd -oarg -a file file cmd -a -oarg -- file file
СМ. ТАКЖЕ
, getopt(2).
ДИАГНОСТИКА
Команда getopt выводит сообщение об ошибке на устройство диагностического вывода в случае, если она встречает буквы опций, не включенные в строку optstring.
ЗАМЕЧАНИЕ
Синтаксис, заданный для этой утилиты, предполагает, что пользователь имеет интерпретатор shell .
НАЗВАНИЕ
getopt - разбор опций команды
СИНТАКСИС
int getopt (argc, argv, optstring) int argc; char **argv, *optstring;
extern char *optarg; extern int optind, opterr;
ОПИСАНИЕ
Функция getopt возвращает очередной флаг из массива argv, соответствующий какой-либо букве в цепочке optstring. Функция getopt поддерживает все правила стандартного синтаксиса команд [см. , правила 3 10]. Чтобы новые команды следовали этим правилам, для разбора позиционных параметров и проверки допустимости опций следует использовать утилиту или описываемую функцию getopt.
Цепочка optstring должна содержать флаги, которые будут распознаваться программой, использующей getopt. Если за флагом следует двоеточие, то предполагается, что опция имеет аргумент или группу аргументов, отделенных от флага пробелами или табуляциями.
В переменную optarg помещается указатель на начало аргумента распознанной опции.
После каждого вызова функция getopt помещает во внешнюю переменную optind индекс того элемента массива argv, который должен обрабатываться следующим. Значение переменной optind до первого обращения к функции getopt равно 1.
Когда все опции обработаны (то есть встретился первый из аргументов, не входящих в состав опций), результат функции getopt равен -1. Можно использовать специальную опцию --, чтобы отметить конец опций. Когда она встретится при разборе, будет возвращено значение -1, а сама опция -- будет пропущена.
ДИАГНОСТИКА
Функция getopt выдает сообщение об ошибке в стандартный протокол и возвращает вопросительный знак ?, когда встречается флаг, не входящий в цепочку optstring, или не оказывается аргумента у опции, требующей аргумент. Выдача сообщения об ошибке может быть подавлено, для чего переменной opterr следует присвоить 0.
ПРИМЕР
Следующий фрагмент программы показывает, как можно обработать аргументы команды, допускающей взаимоисключающие опции a и b, а также опцию o, которая должна иметь аргумент:
main (argc, argv) int argc; char **argv; { int c; extern char *optarg; extern int optind; ... while ((c=getopt (argc,argv,"abo:")) != -1) switch (c) { case 'a': if (bflg) errflg++; else aflg++; break; case 'b': if (aflg) errflg++; else bproc (); break; case 'o': ofile = optarg; break; case '?': errflg++; } if (errflg) { (void) fprintf (stderr, "usage: ... "); exit (2); } for ( ; optind < argc; optind++) { if (access (argv [optind], 4)) { ... }
ПРЕДОСТЕРЕЖЕНИЯ
Хотя текущая реализация функции getopt допускает некоторые отступления от правил, задающих синтаксис команд [см. ], этим не следует пользоваться, так как подобные возможности могут не поддерживаться в следующих версиях системы. Пусть, как и в ПРИМЕРЕ, a и b опции без аргументов, а опции o требуется аргумент. Рассмотрим два типичных отступления от правил:
cmd -aboxxx file
Здесь нарушено правило 5: опция с аргументом не должна быть в одной группе с остальными опциями.
cmd -ab -oxxx file
Нарушено правило 6: после опции, которой требуется аргумент, должен быть пробел или табуляция.
Изменение значения переменной optind или вызовы функции getopt с различными значениями argv могут привести к непредсказуемым результатам.
СМ. ТАКЖЕ
, в Справочнике пользователя.
НАЗВАНИЕ
getopts - разбор опций команды
СИНТАКСИС
getopts цепочка_опций имя [аргумент ...]
ОПИСАНИЕ
Команда getopts используется shell-процедурами для разбора позиционных параметров и проверки опций на допустимость. Команда getopts поддерживает все применимые правила стандартного синтаксиса команд [см. , правила 3-10].
Цепочка_опций должна содержать флаги, которые будут распознаваться shell-процедурой, использующей getopts. Если за флагом следует двоеточие, то предполагается, что опция имеет аргумент или группу аргументов, которые должны отделяться от флага пробелами или табуляциями.
После каждого вызова getopts помещает следующую опцию в переменную имя, а номер аргумента, который должен быть обработан следующим, - в переменную OPTIND. Всегда, когда запускается shell или shell-процедура, OPTIND получает значение 1.
Если опции требуется аргумент, то getopts помещает его в переменную OPTARG.
Если встретилась некорректная опция, то в переменную имя помещается ?.
Если опции кончились, getopts возвращает ненулевой код завершения. Можно использовать специальную опцию --, чтобы отметить конец опций.
По умолчанию команда getopts разбирает позиционные параметры вызвавшей ее shell-процедуры, но если указать дополнительные аргументы, то getopts будет разбирать их.
ПРИМЕР
Следующий фрагмент shell-процедуры cmd показывает, как можно обработать аргументы команды, допускающей опции a и b, а также опцию o, которая должна иметь аргумент:
while getopts abo: c do case $c in a | b) FLAG=$c;; o) OARG=$OPTARG;; ?) echo $USAGE exit 2;; esac done shift `expr $OPTIND - 1`
При такой обработке следующие строки оказываются эквивалентными:
cmd -a -b -o "xxx z yy" file cmd -a -b -o "xxx z yy" -- file cmd -ab -o xxx,z,yy file cmd -ab -o "xxx z yy" file cmd -o xxx,z,yy -b -a file
ПРИМЕЧАНИЯ
Утверждение о эквивалентности предыдущих строк не вполне верно:
В последней строке опции b и a идут в ином порядке, чем в предыдущих, и так как в данном примере эти опции помещаются в одну переменную FLAG, то при обработке последней строки окончательное значение этой переменной окажется не таким, как в предыдущих строках.
В тех строках, в которых аргумент опции o задан в виде "xxx z yy", OARG примет значение xxx z yy, а в тех строках, где аргумент опции o задан как xxx,z,yy, OARG будет равен xxx,z,yy.
ФАЙЛЫ
/usr/bin/getopt Старая версия программы разбора опций. /usr/lib/getoptcvt Программа перевода shell-проце- дур, использовавших getopt, на getopts.
СМ. ТАКЖЕ
gutil(1G), , . getopt(3C) в Справочнике программиста.
ДИАГНОСТИКА
Команда getopts выводит сообщение об ошибке в стандартный протокол, когда встречается опция, не включенная в цепочку_опций.
ПРЕДОСТЕРЕЖЕНИЯ
Хотя текущая реализация getopts допускает некоторые отступления от правил, задающих синтаксис команд [см. intro(1)], этим не следует пользоваться, так как подобные возможности могут не поддерживаться в следующих версиях системы. Пусть, как и в ПРИМЕРЕ, a и b - опции без аргументов, а опции o требуется аргумент:
cmd -aboxxx file
Здесь нарушено правило 5: опция с аргументом не должна быть в одной группе с остальными опциями.
cmd -ab -oxxx file
Нарушено правило 6: после опции, которой требуется аргумент, должен быть пробел или табуляция.
Изменение значения переменной OPTIND или разбор различных наборов аргументов могут привести к непредсказуемому результату.
НАЗВАНИЕ
getpass - чтение пароля
СИНТАКСИС
char *getpass (prompt) char *prompt;
ОПИСАНИЕ
Функция getpass выдает на экран приглашение и отключает отображение на экране вводимых символов. Приглашение задается ограниченной нулевым байтом цепочкой символов prompt. Затем функция getpass считывает символы из файла /dev/tty, пока не встретит перевод строки или конец файла. Результатом служит указатель на ограниченную нулевым байтом цепочку не более чем из восьми символов. Если файл /dev/tty не может быть открыт, то функция возвращает пустой указатель NULL. Символ прерывания прекращает ввод и посылает сигнал прерывания вызывающей программе.
ФАЙЛЫ
/dev/tty
ПРЕДОСТЕРЕЖЕНИЯ
Описанная функция использует стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод.
ОГРАНИЧЕНИЯ
Значение, возвращаемое функцией getpass, указывает на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова.
НАЗВАНИЕ
getpid, getpgrp, getppid - получение идентификаторов процесса, группы процесса и родительского процесса
СИНТАКСИС
int getpid ( ) int getpgrp ( ) int getppid ( )
ОПИСАНИЕ
Системный вызов getpid возвращает идентификатор обратившегося к нему процесса.
Системный вызов getpgrp возвращает идентификатор группы обратившегося к нему процесса.
Системный вызов getppid возвращает идентификатор процесса-предка обратившегося к нему процесса.
СМ. ТАКЖЕ
, , , , .
НАЗВАНИЕ
getpw - получение имени пользователя по числовому идентификатору
СИНТАКСИС
int getpw (uid, buf) int uid; char *buf;
ОПИСАНИЕ
Функция getpw просматривает файл паролей etc/passwd до тех пор, пока не будет найдена строка с числовым идентификатором пользователя, совпадающим с uid. Содержимое этой строки файла паролей копируется по адресу buf. При удачном поиске результат равен 0, в противном случае возвращается отличное от нуля значение.
Эта функция предназначается только для организации совместимости с предыдущими версиями системы, и использовать ее не следует. Вместо нее рекомендуется пользоваться функцией .
ФАЙЛЫ
/etc/passwd
СМ. ТАКЖЕ
, .
ДИАГНОСТИКА
В случае обнаружения ошибки функция getpw возвращает ненулевое значение.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции используют пакет стандартного ввода/ вывода, что приводит к увеличению размера программ, за исключением случая когда вызывающая программа сама использует стандартный ввод/вывод.
НАЗВАНИЕ
getpwent, getpwuid, getpwnam, setpwent, endpwent, fgetpwent - получение элементов файла паролей
СИНТАКСИС
#include <pwd.h>
struct passwd *getpwent ( )
struct passwd *getpwuid (uid) int uid;
struct passwd *getpwnam (name) char *name;
void setpwent ( )
void endpwent ( )
struct passwd *fgetpwent (f) FILE *f;
ОПИСАНИЕ
Каждая из функций getpwent, getpwuid и getpwnam возвращает указатель на структуру типа passwd, содержащую разложенную на поля строку файла паролей /etc/passwd. Структура описана во включаемом файле <pwd.h>:
struct passwd { char *pw_name; char *pw_passwd; int pw_uid; int pw_gid; char *pw_age; char *pw_comment; char *pw_gecos; char *pw_dir; char *pw_shell; };
По поводу смысла полей структуры см. .
При первом вызове функция getpwent возвращает указатель на первую структуру типа passwd в файле; при следующем вызове возвращается указатель на следующую структуру; поэтому последовательные вызовы функции можно использовать для просмотра всего файла. Функция getpwuid ищет с начала файла строку, содержащую заданный идентификатор пользователя uid, и возвращает указатель на структуру, соответствующую искомой строке. Функция getpwnam ищет с начала файла строку, содержащую специфицированное входное имя name и возвращает указатель на соответствующую структуру. В случае неудачного поиска (в том числе из за ошибки чтения) описанные функции возвращают пустой указатель NULL.
Вызов функции setpwent приводит к переустановке указателя чтения на начало файла паролей, то есть после этого вызова можно снова повторить просмотр всего файла. Функция endpwent служит для закрытия файла паролей.
Функция fgetpwent возвращает указатель на очередную структуру типа passwd в потоке f, удовлетворяющем формату файла /etc/passwd.
ФАЙЛЫ
/etc/passwd
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
В случае неудачного поиска (в том числе из за ошибки чтения) возвращается пустой указатель NULL.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции используют стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод.
ОГРАНИЧЕНИЯ
Значения, возвращаемые описанными функциями, указывают на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова. Поэтому, если необходимо сохранить полученную с помощью функций информацию, следует скопировать ее.
НАЗВАНИЕ
getrpcent, getrpcbyname, getrpcbynumber - получить сведения об RPC
СИНТАКСИС
#include <rpc/netdb.h>
struct rpcent *getrpcent()
struct rpcent *getrpcbyname(name) char *name;
struct rpcent *getrpcbynumber(number) int number;
setrpcent(stayopen) int stayopen
endrpcent()
ОПИСАНИЕ
Функции getrpcent, getrpcbyname и getrpcbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в БД номеров программ RPC /etc/rpc:
struct rpcent { char *r_name; /* имя сервера для rpc-программы */ char **r_aliases; /* список псевдонимов */ long r_number; /* номер rpc-программы */ };
ЭЛЕМЕНТЫ СТРУКТУРЫ
Команды работают следующим образом:
Getrpcent считывает следующую строку из файла, открывая файл в случае необходимости.
Функция setrpcent открывает файл и возвращается к его началу. Если флаг stayopen установлен (non-zero), сетевая БД не будет закрываться после каждого обращения к getrpcent. Endrpcent закрывает файл. Getrpcbyname и getrpcbynumber последовательно просматривают файл с самого начала в поисках имени или номера RPC-программы.
ФАЙЛЫ
/etc/rpc имя_домена/rpc.bynumber
СМ. ТАКЖЕ
,
ДИАГНОСТИКА
В случае достижения конца файла или возникновения ошибки возвращаемый указатель имеет нулевое значение.
ЗАМЕЧАНИЯ
Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать.
НАЗВАНИЕ
getrpcent, getrpcbyname, getrpcbynumber - получить сведения об RPC
СИНТАКСИС
#include <rpc/netdb.h>
struct rpcent *getrpcent()
struct rpcent *getrpcbyname(name) char *name;
struct rpcent *getrpcbynumber(number) int number;
setrpcent(stayopen) int stayopen
endrpcent()
ОПИСАНИЕ
Функции getrpcent, getrpcbyname и getrpcbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в БД номеров программ RPC /etc/rpc:
struct rpcent { char *r_name; /* имя сервера для rpc-программы */ char **r_aliases; /* список псевдонимов */ long r_number; /* номер rpc-программы */ };
ЭЛЕМЕНТЫ СТРУКТУРЫ
Команды работают следующим образом:
Getrpcent считывает следующую строку из файла, открывая файл в случае необходимости.
Функция setrpcent открывает файл и возвращается к его началу. Если флаг stayopen установлен (non-zero), сетевая БД не будет закрываться после каждого обращения к getrpcent. Endrpcent закрывает файл. Getrpcbyname и getrpcbynumber последовательно просматривают файл с самого начала в поисках имени или номера RPC-программы.
ФАЙЛЫ
/etc/rpc имя_домена/rpc.bynumber
СМ. ТАКЖЕ
,
ДИАГНОСТИКА
В случае достижения конца файла или возникновения ошибки возвращаемый указатель имеет нулевое значение.
ЗАМЕЧАНИЯ
Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать.
НАЗВАНИЕ
getrpcent, getrpcbyname, getrpcbynumber - получить сведения об RPC
СИНТАКСИС
#include <rpc/netdb.h>
struct rpcent *getrpcent()
struct rpcent *getrpcbyname(name) char *name;
struct rpcent *getrpcbynumber(number) int number;
setrpcent(stayopen) int stayopen
endrpcent()
ОПИСАНИЕ
Функции getrpcent, getrpcbyname и getrpcbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в БД номеров программ RPC /etc/rpc:
struct rpcent { char *r_name; /* имя сервера для rpc-программы */ char **r_aliases; /* список псевдонимов */ long r_number; /* номер rpc-программы */ };
ЭЛЕМЕНТЫ СТРУКТУРЫ
Команды работают следующим образом:
Getrpcent считывает следующую строку из файла, открывая файл в случае необходимости.
Функция setrpcent открывает файл и возвращается к его началу. Если флаг stayopen установлен (non-zero), сетевая БД не будет закрываться после каждого обращения к getrpcent. Endrpcent закрывает файл. Getrpcbyname и getrpcbynumber последовательно просматривают файл с самого начала в поисках имени или номера RPC-программы.
ФАЙЛЫ
/etc/rpc имя_домена/rpc.bynumber
СМ. ТАКЖЕ
,
ДИАГНОСТИКА
В случае достижения конца файла или возникновения ошибки возвращаемый указатель имеет нулевое значение.
ЗАМЕЧАНИЯ
Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать.
НАЗВАНИЕ
getrpcport - получить номер порта RPC
СИНТАКСИС
int getrpcport(host, prognum, versnum, proto) char *host; int prognum, versnum, proto;
ОПИСАНИЕ
Функция getrpcport возвращает номер порта для версии versnum RPC-программы prognum, выполняющейся на машине host и использующей протокол proto. Если с распределителем портов нет связи или если программа prognum не зарегистрирована, функция возвращает 0. Если программа prognum зарегистрирована с номером версии, отличающимся от versnum, функция вернет ее номер порта.
ИМЯ
gets - пoлyчeниe cтpoки co cтaндapтнoгo ввoдa
СИНТАКСИС
gets [ string ]
ОПИСАНИЕ
Gets мoжeт иcпoльзoвaтьcя в кoмaндныx фaйлax для чтeния cтpoки co cтaндapтнoгo ввoдa. Ecли зaдaн apгyмeнт string, oн иcпoльзyeтcя кaк знaчeниe пo yмoлчaнию в cлyчae oшибки. Peзyльтиpyющaя cтpoкa (либo string, либo пpoчитaннaя co cтaндapтнoгo ввoдa), зaпиcывaeтcя в cтaндapтный вывoд. Ecли apгyмeнт нe зaдaн, a пpoизoшлa oшибкa, кoмaндa зaвepшaeтcя c кoдoм 1.
СМ. ТАКЖЕ
,
НАЗВАНИЕ
gets, fgets - чтение цепочки символов из потока
СИНТАКСИС
#include <stdio.h>
char *gets (s) char *s;
char *fgets (s, n, stream) char *s; int n; FILE *stream;
ОПИСАНИЕ
Функция gets читает символы из стандартного потока ввода stdin в область памяти, на которую указывает аргумент s. Чтение производится до тех пор, пока не встретится перевод строки или конец файла. Символ перевода строки отбрасывается, а прочитанная цепочка ограничивается нулевым байтом.
Функция fgets считывает (n-1) символов из потока ввода stream в область памяти, на которую указывает аргумент s. Чтение производится до тех пор, пока не встретится перевод строки (в отличие от gets он не отбрасывается) или конец файла. Прочитанная цепочка символов ограничивается нулевым байтом.
СМ. ТАКЖЕ
, , , , , .
ДИАГНОСТИКА
Если первым прочитанным символом окажется признак конца файла, то есть фактически ни одного символа не будет считано, то обе функции возвращают пустой указатель NULL. Если обнаружена ошибка чтения, например, при попытке использовать эти функции для файлов, не открытых на чтение, то также возвращается NULL. В остальных случаях возвращается значение указателя s.
НАЗВАНИЕ
getty - установка типа терминала, его характеристик и режима работы с линией
СИНТАКСИС
/etc/getty [-h] [-t время_ожидания] линия [скорость [тип_терминала [режим_работы_с_линией]]] /etc/getty -c файл
ОПИСАНИЕ
Программа getty запускается процессом и обслуживает вторую стадию процедуры входа пользователя в систему (init - getty - login - shell). Программа getty может быть выполнена только суперпользователем, то есть процессом, имеющим в качестве идентификатора пользователя root. Сначала getty выводит на экран поле приглашения из используемой строки файла /etc/gettydefs, затем читает входное имя пользователя и запускает программу , передавая ей это имя в качестве аргумента. Во время чтения имени getty пытается приспособиться к типу и скорости терминала, используя аргументы командной строки.
Аргументам программы getty приписан следующий смысл:
линия Имя терминальной линии, к которой программа getty должна подключиться; используется как имя файла в каталоге /dev. Этот файл открывается на чтение и запись.
-h Если опция -h не указана, то getty принудительно освободит линию, установив скорость передачи равной нулю, и только затем установит подразумеваемую или заданную скорость.
-t время_ожидания Программа getty завершится, если файл, соответствующий линии, будет успешно открыт, но в течение указанного времени_ожидания (в секундах) в линию не поступит ни одного символа.
скорость Необязательный аргумент - метка описания скорости и характеристик терминала в файле /etc/gettydefs. Это описание дает getty информацию о начальной скорости, о виде приглашения при входе в систему, о начальных характеристиках терминала, а также о том, какую скорость попробовать, если данная не удовлетворила пользователя (о чем он сообщил, нажав клавишу прерывания). Подразумеваемая скорость - 300 бод.
тип_терминала Необязательный аргумент - цепочка символов, задающая тип терминала, подсоединенного к линии. Программа getty распознает только один тип - none (который является и подразумеваемым), что означает любой терминал, неизвестный системе. Чтобы тип_терминала играл какую-либо роль, в систему должны быть включены подпрограммы обслуживания виртуальных терминалов. Они доступны, но по умолчанию в систему не включаются.
режим_работы_с_линией Необязательный аргумент - цепочка символов, задающая режим работы с линией. Теоретически режимы могут быть разными, но в настоящее время доступен только один, подразумеваемый режим LDISC0.
-c файл Опция проверки корректности. Указанный файл просматривается, как если бы это был файл /etc/gettydefs, и результаты просмотра поступают на стандартный вывод. Если при этом обнаруживаются какие либо ошибки, то выдаются соответствующие сообщения. Если строки файла корректны, то выводятся значения флагов [см. по поводу их интерпретации]. Заметим, что некоторые значения добавляются к флагам автоматически.
Если не указан ни один из необязательных аргументов, программа getty устанавливает скорость в 300 бод, бесструктурный режим (реакция на каждый символ), без отображения вводимых символов, без контроля четности, символы перевода строки будут заменяться последовательностью (возврат каретки, переход к новой строке) и символы табуляции будут заменяться пробелами при выдаче их на стандартный вывод. Затем getty выдает приглашение и приступает к посимвольному вводу входного имени пользователя. Если будет получен символ с нулевым кодом (или произойдет нарушение протокола), делается вывод, что пользователь нажал клавишу прерывания. В результате getty произведет попытку использовать следующее значение скорости из серии доступных значений, определенных в файле /etc/gettydefs.
Ввод входного имени пользователя должен завершаться нажатием клавиши перевода строки или возврата каретки. В последнем случае устанавливается соотвестствующая трактовка системой символа возврата каретки [см. ].
Имя пользователя просматривается на предмет наличия в нем малых букв; если таковых нет и имя не пусто, система в дальнейшем будет преобразовывать все большие буквы в малые.
Наконец, программа getty выполняет системный вызов и заменяется программой login с входным именем пользователя в качестве аргумента. После имени пользователя могут быть введены дополнительные аргументы, которые будут переданы программе login, и та поместит их в окружение [см. ].
ФАЙЛЫ
/etc/gettydefs Файл с данными о скорости обмена и ха- рактеристиками терминалов. /etc/issue Файл, содержимое которого выдается пе- ред приглашением к входу в систему.
СМ. ТАКЖЕ
, .
, в Справочнике пользователя.
, , в Справочнике программиста.
СЮРПРИЗЫ
Хотя getty в принципе поддерживает соглашение об экранировании одиночных символов, на некоторые управляющие символы соглашение не распространяется. Так, при входе в систему символы #, @, /, !, _, забой, CTRL+U, CTRL+D и & нельзя употреблять во входном имени или дополнительных аргументах. Программа getty использует эти символы для определения конца строки, принятого протокола и вида символа забоя; они всегда интерпретируются как имеющие специальное значение.
НАЗВАНИЕ
getty - Устанавливает вид терминала, режимы, скорость и вид строки.
СИНТАКСИС
/etc/getty [-h][-t timeout] line [speed [type [linedisc]]] /etc/getty -c file
ОПИСАНИЕ
getty представляет программу, вызываемую init. Это второй процесс в последовательности (init-getty-login-shell), который окончательно соединяет пользователя с системой XENIX. Сначала gettyљвыводит на дисплей из /etc/gettydefs поле входного сообщения для используемого ввода. gettyљ считывает входное имя пользователя и вызывает команду login с именем пользователя в качестве аргумента. При считывании имениљgettyљпытается приспособить систему к скорости и к виду используемого терминала.
Line является строкой в /etc/ttys, к которой gettyљдолжен подключиться. gettyљ использует эту строку в качестве имени файла в каталоге /dev, для того чтобы открыть его для чтения и записи. Флаг -tљиљtimeoutљв секундах определяют, что getty должен завершиться, если открытие строки прошло успешно, и никто ничего не ввел за определенное число секунд. Необязательный второй аргумент, speed, является меткой к скорости и определениюљttyљв файле /etc/gettydefs. Это определение говорит getty, с какой скоростью должно выполняться первоначальное вычисление, как должно выглядеть входное сообщение, каковы начальные установки tty, и каков предел скорости вычислений (с помощью ввода BREAK). По умолчанию эта скорость 300 бод. Третий необязательный аргумент, type, представляет собой строку символов, которая сообщает getty, какой тип терминала подсоединен к запрашиваемой строке. gettyљпонимает вид none - любой CRT или обычный терминал, неизвестный системе. Это по умолчанию.
Чтобы вид терминала имел какое-либо значеие, работающие с виртуальным терминалом должны быть откомпиллированы в операционную систему. Они доступны, но по умолчанию они не компиллируются. Четвертый необязательный аргумент, linedisc, представляет собой строку символов, описывающих, какой вид строк используется при связи с терминалом. Кроме того, крючки видов строк доступны в операционной системе, но существует только один действительно доступный, по умолчанию, вид строк LDISCO.
Если обязательные параметры не указаны, тољgetty указывает speed интерфейса, равный 300 бод, определяет, что будет использоваться исходный режим (вызываемый на каждом символе), что будет подавляться эхо или разрешаться четность, что символы новой строки будут преобразованы в подачу строки возврата каретки, и что в стандартном выходе осуществляется стандартное расширение. Перед тем, как считать имя пользователя, она высвечивает входное сообщение посимвольно. Если получен нулевой символ (или ошибка записи), считается, что это результат нажатия пользователем клавиши BREAK. Это приведет к попытке вызова программы getty следующего speed по порядку. Порядок, в котором getty пытается это произвести, определяется тем, что находится в /etc/gettydefs.
Имя пользователя прерывается новой строкой или символом возврата каретки. Последний вызывает установку системы так, чтобы каретка соответсвенно возвратилась( смотри ).
Имя пользователя просматривается для того, чтобы увидеть, содержит ли оно какие-либо строчные символы алфавита. getty предполагает, что пользователь использует все строчные символы. Если пользователь употребляет прописные символы, в системе дается указание преобразовать любые дальнейшие прописные символы в соответсвенные строчные символы.
Наконец, вызывается login-program из /etc/gettydefs с именем пользователя в качестве аргумента. После входного имени могут быть введены дополнительные аргументы. Они передаются в login-program. По умолчанию login-program, /etc/login, помещает их в среду (смотри ).
Обеспечивается параметр проверки. Когда getty вызывается параметром -с и file, она просматривает файл, как если бы она просматривала и распечатывала результаты на стандартный выход. Если есть какие-либо нераспознанные режимы или неправильно созданные входы, она сообщает об этом. Если входы правильные, она распечатывает значения различных файлов. Для объяснения значения смотри . Отметим, что некоторые значения добавляются к флагам автоматически.
ПРИМЕЧАНИЯ
Для поддержки использования строки для uucico, cu и ct были сделаны изменения, а именно, строка может быть использована в обоих направлениях. getty позволяет пользователю входить в систему, но если строка свободна, uucico,cuљилиљctљмогут использовать ее для вызовов. Применение зависит от того, как при использовании устройств uucico, cu и ct создают открытые файлы. Когда "открыто" возвращается на строку модемного управления (или первый символ считывается на строку немодемного управления), состояние закрытого файла указывает, используется ли строка uucico, cu, ct, или кто-то пытается войти. Отметим, что в случае немодедного управления до вывода входного сообщения может потребоваться несколько символов <возврата каретки>. Пользователь-человек сможет справиться с этим небольшим неудобством. О том, что пытаемся ввести uucico, следует сообщить с помощью входного шрифта, аналогичного следующему:
""\r\d\r\d\r\d\r in:--in:...
где ...- все, что могло бы быть обычно использовано во входной последовательности.
НАЗВАНИЕ
gettydefs - данные о скорости обмена и характеристиках терминала, используемые программой getty
ОПИСАНИЕ
Файл /etc/gettydefs содержит информацию, используемую программой для установки скорости обмена и терминальных характеристик линии. Из файла берется информация о том, как должно выглядеть приглашение при входе в систему. В нем также указывается скорость обмена, которую надо попытаться установить, если текущее значение некорректно (о чем пользователь сообщает нажатием клавиши прерывания).
Элементы файла /etc/gettydefs имеют следующий формат:
метка# нач_флаги # кон_флаги #приглашение #след_метка
После каждого элемента должна следовать пустая строка. Строки, начинающиеся с символа #, игнорируются. Поля могут содержать взятые в кавычки символы вида \b, \n, \c и т.д., а также конструкции \nnn, где nnn есть восьмеричное значение требуемого символа. Поля трактуются следующим образом:
метка Цепочка символов, с которой пытается сопоставить свой второй аргумент. Часто (но не всегда) в качестве метки используется скорость обмена с терминалом, например 9600. нач_флаги Начальные флаги задают характеристики терминала, которые будут установлены посредством вызова , если для getty не указан тип терминала. Допустимые флаги перечислены во включаемом файле <sys/termio.h> [см. ]. Обычно из начальных флагов требуется только флаг скорости. Getty автоматически устанавливает терминал в режим бесструктурного ввода и заботится о большинстве остальных флагов. Установка начальных флагов действует до тех пор, пока getty не выполнит команду . кон_флаги Конечные флаги имеют тот же смысл, что и начальные, и устанавливаются непосредственно перед тем, как getty вызывает login. Флаг скорости также обязателен. Комплексный флаг SANE устанавливает большинство остальных флагов, необходимых, чтобы процессор и терминал обменивались рациональным образом. Другие два обычно указываемые флага есть TAB3 (табуляции выводятся на терминал как последовательности пробелов) и HUPCL (линия освобождается при последнем закрытии). приглашение Поле целиком выдается в качестве приглашения при входе в систему. В отличие от вышеописанных полей, где пробелы, табуляции и переводы строк игнорируются, здесь они входят в приглашение. след_метка Метка следующего элемента файла, который getty попытается использовать, если скорость обмена оказалась неподходящей. Характеристики терминала будут установлены согласно новым флагам. Обычно набор элементов для различных скоростей образует кольцевой список. Например, элемент с меткой 2400 указывает на 1200, тот указывает на 300, а этот последний вновь указывает на 2400.
Если к обратились без второго аргумента, то используется первый элемент файла /etc/gettydefs. Первый элемент используется и тогда, когда не может найти заданную метку. Если сам файл /etc/ gettydefs отсутствует, то используется встроенный в команду вход для терминала со скоростью обмена 300 бод.
Настоятельно рекомендуется после создания или изменения файла /etc/gettydefs проверять его посредством запуска getty с опцией контроля.
ФАЙЛЫ
/etc/gettydefs
СМ. ТАКЖЕ
.
в Справочнике пользователя.
, в Справочнике администратора.
НАЗВАНИЕ
getuid, geteuid, getgid, getegid - получение реальных и действующих идентификаторов пользователя и группы
СИНТАКСИС
unsigned short getuid ( ) unsigned short geteuid ( ) unsigned short getgid ( ) unsigned short getegid ( )
ОПИСАНИЕ
Системный вызов getuid возвращает реальный идентификатор пользователя обратившегося к нему процесса.
Системный вызов geteuid возвращает действующий идентификатор пользователя обратившегося к нему процесса.
Системный вызов getgid возвращает реальный идентификатор группы обратившегося к нему процесса.
Системный вызов getegid возвращает действующий идентификатор группы обратившегося к нему процесса.
СМ. ТАКЖЕ
, .
НАЗВАНИЕ
getutent, getutid, getutline, pututline, setutent, endutent, utmpname - доступ к utmp-файлу
СИНТАКСИС
#include <sys/types.h>
#include <utmp.h>
struct utmp *getutent ( )
struct utmp *getutid (id) struct utmp *id;
struct utmp *getutline (line) struct utmp *line;
void pututline (utmp) struct utmp *utmp;
void setutent ( )
void endutent ( )
void utmpname (file) char *file;
ОПИСАНИЕ
Результатом функций getutent, getutid и getutline является указатель на структуру следующего типа:
struct utmp { char ut_user[8]; /* Входное имя пользователя */ char ut_id[4]; /* Идентификатор из файла /etc/inittab (обычно номер линии) */ char ut_line[12]; /* Имя устройства (console, tty xx) */ short ut_pid; /* Идентификатор процесса */ short ut_type; /* Тип элемента */ struct exit_status { short e_termination; /* Системный код завершения процесса */ short e_exit; /* Пользовательский код завер- шения */ } ut_exit; /* Код завершения процесса, поме- ченного как DEAD_PROCESS */ time_t ut_time; /* Время создания элемента */ };
Функция getutent читает следующий элемент из файла типа utmp. Если файл еще не открыт, он открывается. При достижении конца файла выполнение функции завершается неудачей.
Функция getutid, начиная с текущей позиции, разыскивает элемент utmp-файла, в котором поле ut_type соответствует значению id->ut_type. Если компонент id->ut_type равен RUN_LVL, BOOT_TIME, OLD_TIME, или NEW_TIME, то требуется точное равенство типов. Если же компонент id->ut_type равен INIT_PROCESS, LOGIN_PROCESS, USER_PROCESS, или DEAD_PROCESS, то функция getutid вернет указатель на первый элемент, тип которого равен одному из четырех перечисленных, и поле ut_id соответствует значению id->ut_id. Функция getutid завершается неудачей, если ничего не находит до конца файла.
Функция getutline, начиная с текущей позиции, разыскивает элемент utmp-файла, тип которого равен LOGIN_PROCESS или USER_PROCESS, а поле ut_line соответствует значению line->ut_line. Функция getutline завершается неудачей, если ничего не находит до конца файла.
Функция pututline записывает указанную utmp-структуру в utmp-файл. При этом для поиска нужного места используется функция getutid, если обнаруживается, что текущая позиция не является подходящей. Предполагается, что пользователь, перед тем как обратиться к pututline, установил нужную текущую позицию с помощью одной из функций getut. Если это сделано, pututline не будет производить поиск. Если pututline не обнаружит подходящего места для нового элемента, элемент будет добавлен в конец файла.
Функция setutent устанавливает указатель текущей позиции на начало файла. Это должно быть сделано перед поиском нового элемента, если предполагается, что поиск должен проводиться во всем файле.
Функция endutent закрывает открытый файл.
Функция utmpname позволяет изменить имя обрабатываемого файла с /etc/utmp на любое другое. Предполагается, что чаще всего этим другим именем будет /etc/wtmp. Если файл не существует, он не будет создаваться до первого обращения к нему. Функция utmpname не отрывает файл, она только закрывает открытый файл и запоминает имя нового файла.
ФАЙЛЫ
НАЗВАНИЕ
glossary - толковый словарь терминов системы UNIX
СИНТАКСИС
[help] glossary [термин]
ОПИСАНИЕ
Команда справочной службы glossary предоставляет определения технических терминов и символов системы UNIX.
Команда glossary без аргумента изображает на экране меню терминов и символов, занесенных в словарь. Пользователь может либо выбрать один из них, либо вернуться в систему, введя q (quit - выйти). Когда термин выбран, его определение считывается и выдается на экран. Делая соответствующий выбор в меню, можно вновь получить список терминов и символов.
Определение термина можно запросить непосредственно с уровня операционной системы (см. СИНТАКСИС), минуя начальное меню. При этом некоторые символы должны быть экранированы, чтобы команда glossary могла их распознать. Ниже перечислены символы и правила их экранирования.
В любой момент диалога со справочной службой пользователь может выполнить команду shell'а [см. ], введя ! и собственно команду. После ее выполнения экран перерисовывается, если команда была введена в ответ на приглашение первого уровня; в противном случае перерисовывается только приглашение.
По умолчанию справочная служба роллирует изображение. Если Вы предпочитаете, чтобы экран очищался перед выводом данных (без роллинга), переменной shell'а SCROLL нужно присвоить значение no и экспортировать ее, чтобы сделать частью окружения. Для этого в пользовательский профайл .profile [см. ] достаточно вставить строку
SCROLL=no; export SCROLL
Чтобы вернуть роллинг, переменной SCROLL нужно присвоить значение yes.
Каждой из команд справочной службы (starter, locate, usage, glossary и help) посвящена отдельная статья настоящего Справочника.
СМ. ТАКЖЕ
help(1), , , , .
term(5) в Справочнике программиста.
helpadm(1M) в Справочнике администратора.
СЮРПРИЗЫ
Если переменная окружения TERM не установлена, то по умолчанию считается, что работа идет с терминалом типа 450. Список допустимых типов терминалов содержится в файле .
НАЗВАНИЕ
gps - цепочка графических примитивов, формат графических файлов
ОПИСАНИЕ
GPS - это формат, используемый для хранения графической информации. Для редактирования и вывода на различные устройства файлов GPS-формата разработано несколько программ. В формате GPS создают выходные файлы и такие высокоуровневые графические программы, как plot [см. ] и vtoc [см. ].
Формат GPS включает пять типов графических примитивов.
Примитивы
Примитив ломаная обрабатывает переменное число точек, из которых создается нуль или более последовательно соединенных отрезков. В первую точку графический курсор перемещается без рисования. Каждая следующая точка соединяется отрезком с предыдущей. Параметрами примитива являются также цвет, толщина и тип (см. ниже).
Примитив кривая обрабатывает переменное число точек, через которые проводится кривая. В первую точку графический курсор перемещается без рисования. Если заданы только две точки, то результатом будет отрезок, их соединяющий; если заданы три точки, то рисуется дуга окружности, проходящая через них; если задано больше трех точек, то они соединяются отрезками (в будущем, если задано больше трех точек, будет рисоваться сплайн). Параметрами примитива являются также цвет, толщина и тип.
Примитив текст служит для вывода цепочки символов. Необходимо задать координаты центра первого изображаемого символа, а также параметры цвет, шрифт, размер и угол.
Примитив аппаратура рисует аппаратные символы или предоставляет возможность выдавать управляющие команды для графического устройства. Единственный параметр примитива - точка - обозначает начальную позицию аппаратной цепочки символов.
Примитив комментарий занимает строку в GPS-файле, но на изображение не влияет. Все GPS-файлы начинаются с комментария нулевой длины.
Параметры
Целочисленный параметр цвет употребляется в примитивах ломаная, кривая и текст.
Целочисленный параметр толщина (линии) используется в примитивах ломаная и кривая. Значение 0 соответствует узкой линии, 1 - широкой и 2 - линии средней толщины.
Целочисленный параметр тип употребляется в примитивах линия и кривая и обозначает один из пяти различных типов линий, которые могут быть изображены на дисплеях серии Tektronix 4010 с запоминающей трубкой:
Целочисленный параметр шрифт используется в примитиве текст. В настоящее время шрифт задается как 4-битное значение толщины и следующее за ним 4-битное значение типа.
Целочисленный параметр размер также употребляется в примитиве текст; он задает высоту символов в абсолютных мировых единицах и хранится как одна пятая этой величины в слове размер_угол (см. ниже).
Целочисленный (со знаком) параметр угол, как и два предыдущих, является составной частью примитива текст; он обозначает угол наклона, под которым выводится текст. Угол задается в градусах относительно положительного направления оси x; хранится в слове размер_угол в виде значения 256/360 от его абсолютной величины.
Структура примитивов GPS
Примитивы GPS имеют следующую внутреннюю организацию:
ломаная упр_слово точка ... цвет_тип
кривая упр_слово точка ... цвет_тип
текст упр_слово точка цвет_тип размер_угол [цепочка]
аппаратура упр_слово точка [цепочка]
комментарий упр_слово [цепочка]
С управляющего (полу)слова упр_слово начинаются все примитивы. Первые 4 бита упр_слова содержат код примитива, остальные 12 - число 16-битных (полу)слов, составляющих примитив.
Точка задается двумя целочисленными (16-битными) координатами. В примитивах текст и аппаратура параметр точка один, в примитивах ломаная и кривая таких параметров может быть несколько. Диапазон каждой из координат - от -32768 до 32767.
Цвет_тип используется в примитивах ломаная, кривая и текст. Для всех трех примитивов первые 8 бит содержат информацию о цвете. В примитивах ломаная и кривая остальные 8 бит разделены на две группы по 4 бита: для толщины и для типа. В примитиве текст эти 8 бит содержат шрифт.
Размер_угол употребляется в примитиве текст. По 8 бит отводится на размер текста и угол наклона.
Цепочка символов должна оканчиваться нулевым байтом (или двумя такими байтами, если это необходимо для выравнивания по границе (полу)слова).
СМ. ТАКЖЕ
, , в Справочнике пользователя.
НАЗВАНИЕ
graph - рисование графика
СИНТАКСИС
graph [-a [шаг [начальная_абсцисса]]] [-b] [-c метка] [-g [тип_сетки]] [-l метка_графика] [-m [тип_линии]] [-s] [-x [l] [начальная_абсцисса [конечная_абсцисса [шаг_сетки]]]] [-y [l] [начальная_ордината [конечная_ордината [шаг_сетки]]]] [-h высота] [-w ширина] [-r вправо] [-u вверх] [-t]
ОПИСАНИЕ
Команда graph без указания опций берет пары чисел со стандартного ввода, рассматривая их как значения абсциссы и ординаты точек графика. Последовательные точки соединяются отрезками прямых. Стандартный вывод команды graph преобразуется в картинку фильтром .
Если за координатами точки следует нецифровая цепочка символов, она (цепочка) выводится как метка точки. Если метку заключить в кавычки ", в нее можно включить пробелы, цифры или сделать пустой; перевод строки не может входить в метку.
Команда graph распознает следующие опции, причем каждая должна быть задана как отдельный аргумент:
-a [шаг [начальная_абсцисса]] Автоматическое назначение абсцисс (при вводе задаются только ординаты). Значение шага по умолчанию равно 1, начальной_абсциссы равно нулю или нижнему пределу, заданному при помощи опции -x).
-b Разрывать график после каждой метки.
-c метка Подразумеваемая метка для каждой точки.
-g [тип_сетки] Значения типа_сетки: 0 - нет сетки, 1 - разметка осей, 2 - полная сетка (значение по умолчанию).
-l метка_графика Задается метка всего графика.
-m [тип_линии] Значения типа_линии: 0 - не соединять точки, 1 - соединять сплошной линией (значение по умолчанию). Некоторые устройства могут воспринимать и другие типы линий. Например, для терминала Tektronix 4014 тип_линии 2 - это точечная линия, 3 - штрихпунктирная, 4 - пунктирная, 5 - длинно пунктирная).
-s Сохранить экран, не очищать перед рисованием.
-x [l] [начальная_абсцисса [конечная_абсцисса [шаг_сетки]]] Если l присутствует, ось x трактуется как логарифмическая. Обычно значения трех последующих аргументов определяются автоматически.
-y [l] [начальная_ордината [конечная_ордината [шаг_сетки]]] Аналогично опции -x.
-h высота Высота - часть экрана (листа) по высоте, которую займет график.
-w ширина То же для ширины.
-r вправо На какую часть экрана (листа) нужно сместиться вправо перед началом рисования.
-u вверх То же для смещения вверх.
-t Поменять местами оси абсцисс и ординат.
Информация о диапазоне изменения x и y выводится вместе с сеткой, кроме случая, когда указана опция -s. Если заданный нижний предел превышает верхний, направление оси меняется на обратное.
СМ. ТАКЖЕ
graphics(1G), , .
СЮРПРИЗЫ
Graph запоминает все точки в оперативной памяти и отбрасывает те из них, на которые не хватает места.
Отрезки, которые выходят за границы, не выводятся.
Направление логарифмической оси не может быть изменено на обратное.
НАЗВАНИЕ
graphics - создание графического окружения
СИНТАКСИС
graphics [-r]
ОПИСАНИЕ
Команда graphics добавляет каталог /usr/bin/graf к текущему значению $PATH, изменяет основное приглашение на "^ " и запускает новый shell. Каталог /usr/bin/graf содержит команды графической подсистемы.
Если указана опция -r, доступ к графическим командам обеспечивается в ограниченном окружении; это означает, что $PATH будет равен
:/usr/bin/graf:/rbin:/usr/rbin:/bin:/usr/bin
и будет запущен ограниченный shell, . Чтобы восстановить окружение, которое было до использования команды graphics, наберите CTRL+D. Для выхода из системы наберите quit.
В графическом окружении командная строка строится по обычным правилам [см. ]. Графические команды можно разделить на 4 группы.
Команды, которые работают с численными данными и визуализируют их; см. . Команды, генерирующие оглавления; см. . Команды, взаимодействующие с графическими устройствами; см. , . Другие графические утилиты; см. .
Находясь в графическом окружении, можно получить список доступных команд, набрав whatis.
СМ. ТАКЖЕ
gdev(1G), , , , .
СЮРПРИЗЫ
Справочная команда whatis не работает.
НАЗВАНИЕ
grep - поиск по шаблону, заданному ограниченным регу- лярным выражением
СИНТАКСИС
grep [-b] [-c] [-i] [-l] [-n] [-s] [-v] ограниченное_регулярное_выражение [файл ...]
ОПИСАНИЕ
Команда grep сопоставляет строки исходных файлов с шаблоном, заданным ограниченным_регулярным_выражением. Если файлы не указаны, используется стандартный ввод. Обычно каждая успешно сопоставленная строка копируется на стандартный вывод; если исходных файлов несколько, перед найденной строкой выдается имя файла. В grep используется компактный недетерминированный алгоритм. В качестве шаблонов воспринимаются ограниченные регулярные выражения (выражения, имеющие своими значениями цепочки символов, и использующие ограниченный набор алфавитно-цифровых и специальных символов). Они имеют тот же смысл, что и регулярные выражения в .
Для экранирования символов $, *, [ ], ^, |, ( ), и \ от интерпретации shell'ом проще всего заключать ограниченное_регулярное_выражение в одинарные кавычки.
В командной строке могут задаваться следующие опции:
СМ. ТАКЖЕ
ed(1), , , , .
КОДЫ ЗАВЕРШЕНИЯ
0 Были успешные сопоставления. 1 Успешных сопоставлений не было. 2 Есть синтаксические ошибки или недоступные файлы (даже если были успешные сопоставления).
СЮРПРИЗЫ
В идеале должна быть одна утилита для поиска по шаблону, однако трудно придумать алгоритм, достигающий во всех случаях приемлемого компромисса между расходом времени и памяти.
Длина строки ограничена BUFSIZ символами; более длинные строки обрезаются. Значение BUFSIZ определяется во включаемом файле .
Если в конце строки стоит несколько пустых символов (с кодом 0), grep выполняет сопоставление только до первого из них; в случае успеха выдается вся строка.
НАЗВАНИЕ
group - файл групп пользователей
ОПИСАНИЕ
Файл /etc/group содержит информацию о каждой из групп в виде строки, состоящей из следующих полей:
Имя группы. Шифрованный пароль. Числовой идентификатор группы. Список (через запятую) всех пользователей группы.
Файл group является чисто текстовым. Поля разделяются двоеточием. Если поле пароля пусто, пароль при входе не требуется.
Файл group находится в каталоге /etc. Поскольку пароли зашифрованы, файл может и должен иметь общий доступ на чтение. Его можно использовать, например, для получения имен групп по числовым идентификаторам.
СМ. ТАКЖЕ
.
, в Справочнике пользователя.
НАЗВАНИЕ
group - yчeтный фaйл гpyпп
ОПИСАНИЕ
Group coдepжит cлeдyющyю инфopмaцию для кaждoй гpyппы:
Имя гpyппы Зaшифpoвaнный пapoль (нe oбязaтeлeн) Чиcлoвoй идeнтификaтop гpyппы Cпиcoк пoльзoвaтeлeй, вxoдящиx в гpyппy (paздeлeны зaпятoй).
Пoля в фaйлe paздeлeны двoeтoчиями (`:'), инфopмaция o кaждoй гpyппe зaкaнчивaeтcя cимвoлoм пepeвoдa cтpoки. Ecли пoлe пapoля пycтo, знaчит пapoль oтcyтcвyeт.
Фaйл нaxoдитcя в кaтaлoгe /etc.
ФАЙЛЫ
/etc/group
СМ. ТАКЖЕ
, ,
ИМЯ
groups - показывает список групп, к которым принадлежит пользователь.
СИНТАКСИС
groups [user]
ОПИСАНИЕ
Утилита groups была вытеснена утилитой id, и эквивалента 'id -Gn [user]'.
Утилита groups показывает группы, к которым Вы (если не указан параметр user) принадлежите.
Утилита groups возвращает 0 в случае успеха и значение >0 при возникновении ошибки.
СМ. ТАКЖЕ
ИМЯ
grpcheck - Проверяет групповой файл.
СИНТАКСИС
grpcheck [file]
ОПИСАНИЕ
Команда grpcheck проверяет все записи в групповом файле. Эта верификация включает проверку числа полей, группового имени, группового идентификатора ID и все ли имена вхождения в систему присутствуют в файле паролей. По умолчанию в качестве группового файла используется файл /etc/group.
ФАЙЛЫ
/etc/group /etc/passwd
СМ. ТАКЖЕ
, group(3), passwd(3).
ДИАГНОСТИКА
Групповые записи в файле /etc/group без имен регистрации отмечены флагами.
НАЗВАНИЕ
gutil - графические утилиты
СИНТАКСИС
имя_утилиты [опция ...] [метафайл ...]
ОПИСАНИЕ
Ниже приводится описание разнообразных аппаратно-независимых утилит, находящихся в каталоге /usr/bin/graf [см ]. Если не оговорено противное, под метафайлом понимается файл в формате GPS [см. ]. Если метафайлы не указаны, информация читается со стандартного ввода. Результаты записываются на стандартный вывод.
bel - звонок Посылает на терминал управляющий символ, вызывающий звуковой сигнал.
cvrtopt [[=sцепочка] [=fцепочка] [=iцепочка] [=tцепочка]] ... [аргумент .. преобразование опций Команда преобразует аргументы (обычно это позиционные параметры вызывающей shell-процедуры), чтобы облегчить их обработку. Аргумент - это или имя файла, или цепочка опций [см. ]. Результат работы команды cvrtopt имеет вид
-опция -опция ... имя_файла ...
то есть каждая опция становится отдельным аргументом, а все опции предшествуют именам файлов.
Чтобы обеспечить правильный разбор двухбуквенных опций, а также опций, состоящих из флага и значения (таких, например, как -r17.2), их следует описать в конструкциях =t и/или =s, =f, =i команды cvrtopt. Пример:
cvrtopt =fr аргумент ...
Как правило, команда cvrtopt используется в сочетании с set в начале shell-процедур:
set -- `cvrtopt =sопция ... =fопция ... =iопция ... =tопция ... $@`
Смысл =sfit-конструкций команды cvrtopt (упоминаемые ниже цепочки состоят из одного или двух символов):
=sцепочка Цепочка есть имя опции, входящей в число аргументов cvrtopt, и имеющей своим значением цепочку символов.
=fцепочка Цепочка есть имя опции, входящей в число аргументов cvrtopt, и имеющей своим значением действительное число.
=iцепочка Цепочка есть имя опции, входящей в число аргументов cvrtopt, и имеющей своим значением целое число.
=tцепочка Цепочка есть имя двухбуквенной опции.
gd [метафайл ...] - GPS-дамп Дамп метафайлов в удобочитаемом формате.
gtop [-rномер_области] [-u] [метафайл ...] - преобразование метафайлов Команда gtop преобразует метафайлы из формата в формат . Транслируются объекты, попадающие в окно, охватывающее первый метафайл, если только не задана одна из опций:
-rномер_области Транслируются объекты из GPS-области с заданным номером.
-u Транслируются все объекты из GPS-мира.
pd [метафайл_в_формате_plot(4) ...] - -дамп Дамп метафайлов_в_формате_plot(4), позволяющий человеку ознакомиться с их содержимым.
ptog [метафайл_в_формате_plot(4) ...] - преобразование в формат GPS Преобразование метафайлов_в_формате_plot(4) в формат .
quit выход из системы
remcom [файл ...] - удаление комментариев Команда remcom удаляет из файлов комментарии и записывает результат на стандартный вывод. Комментарии распознаются по правилам языка C: /* комментарий */.
whatis [-o] [имя_команды ...] - получение справочной информации Команда whatis выдает справочную информацию об использовании графических команд. Если имя_команды не указано, выдается перечень графических команд. Если в качестве имени_команды задать \*, будет выдано описание всех команд. Если задана опция -o, выдается только описание опций графических команд.
yoo файл - создание канала Команда yoo копирует стандартный ввод в указанный файл. Допустимо назначать стандартный ввод на тот же файл.
СМ. ТАКЖЕ
getopts(1), , .
gps(4), в Справочнике программиста.
СЮРПРИЗЫ
Справочная команда whatis не работает
ИМЯ
gzexe - сжимает исполнимые файлы
СИНТАКСИС
gzexe [ name ... ]
ОПИСАНИЕ
Утилита gzexe сжимает исполнимые файлы и автоматически их распаковывает при исполнении. Для примера выполните команду ``gzexe /bin/cat''. Она создаст два файла:
-r-xr-xr-x 1 root bin 9644 Feb 11 11:16 /bin/cat -r-xr-xr-x 1 bin bin 24576 Nov 23 13:21 /bin/cat~
/bin/cat~ - это оригинал, а /bin/cat - сжатый файл. Вы можете переименовать /bin/cat~ в /bin/cat если недовольны работой утилиты gzexe или хотите восстановить прежнее состояние файла.
Эту утилиту целесообразно применять в системах с небольшим количеством дискового пространства.
ОПЦИИ
СМ. ТАКЖЕ
gzip(1), , zmore(1), ,
НАЗВАНИЕ
ssignal, gsignal - программный вариант механизма сигналов
СИНТАКСИС
#include <signal.h>
int (*ssignal (sig, action)) ( ) int sig, (*action) ( );
int gsignal (sig) int sig;
ОПИСАНИЕ
Функции ssignal и gsignal представляют собой программную реализацию механизма передачи сигналов, похожего на тот, что обеспечивается системным вызовом . Эти функции используются стандартной библиотекой языка C, чтобы предоставить пользователю возможность нестандартной обработки ошибочных ситуаций. Функции ssignal и gsignal можно использовать и в иных целях.
Программные сигналы, доступные пользователю, обозначаются целыми числами от 1 до 16 включительно. Выполнение функции ssignal ассоциирует действие, action, с программным сигналом sig; возбуждение сигнала sig осуществляется функцией gsignal. Возбуждение сигнала приводит к выполнению ассоциированного с ним действия.
В качестве первого аргумента функции ssignal передается число, идентифицирующее сигнал, для которого требуется установить действие. Второй аргумент определяет это действие; оно может быть задано как именем функции (определенной пользователем), так и одной из констант SIG_DFL (стандартное действие) или SIG_IGN (игнорирование). Функция ssignal возвращает указатель на функцию, определяющую предыдущее действие, установленное для этого сигнала; если нет ранее установленного действия или номер сигнала некорректен, то возвращается константа SIG_DFL.
Функция gsignal возбуждает сигнал, заданный аргументом sig, при этом:
Если для обработки сигнала sig была установлена пользовательская функция, то сначала восстанавливается стандартная реакция на возбужденный сигнал, а затем вызывается пользовательская функция с аргументом sig. Функция gsignal возвращает значение, переданное ей пользовательской функцией обработки сигнала. Если действием для сигнала sig является SIG_IGN, (сигнал игнорируется), то функция gsignal возвращает 1 и не предпринимает каких-либо других действий. Если действием для сигнала sig является SIG_DFL (стандартная реакция), то функция gsignal возвращает 0 и не предпринимает каких-либо других действий. Если номер сигнала sig не является корректным или для сигнала sig не специфицировано действие, то функция gsignal возвращает значение 0 и не предпринимает каких-либо других действий.
СМ. ТАКЖЕ
, .
ПРИМЕЧАНИЯ
Есть несколько дополнительных сигналов с номерами, выходящими за пределы интервала от 1 до 16. Они используются функциями из стандартной библиотеки языка C для указания ошибочных ситуаций. В результате некоторые номера сигналов за пределами интервала от 1 до 16 являются допустимыми, хотя их использование может конфликтовать с функциями из стандартной библиотеки языка C.