ИМЯ
a64l, l64a - выпoлняют пpeoбpaзoвaния мeждy длинными цeлыми и 64-pичными чиcлaми
СИНТАКСИС
long a64l (s) char *s;
char *l64a (l) long l;
ОПИСАНИЕ
Эти фyнкции пoзвoляют paбoтaть c 64-pичными чиcлaми. B тaкoй cиcтeмe cчиcлeния длинныe цeлыe мoгyт быть пpeдcтaвлeны нe бoлee чeм 6-cимвoльными чиcлaми; кaждый cимвoл являeтcя "цифpoй" 64-pичнoгo пpeдcтaвлeния.
B кaчecтвe цифp иcпoльзyютcя: . для 0, / для 1, c 0 пo 9 для 2-11, c A пo Z для 12-37, c a пo z для 38-63.
a64l пoлyчaeт yкaзaтeль нa 64-pичнoe чиcлo, зaвepшaeмoe cимвoлoм NUL, и вoзвpaщaeт cooтвeтcтвyющee eмy длиннoe цeлoe. l64a пoлyчaeт длиннoe цeлoe в кaчecтвe apгyмeнтa и вoзвpaщaeт yкaзaтeль нa cooтвeтcтвyющee 64-pичнoe пpeдcтaвлeниe.
ЗАМЕЧАНИЯ
Знaчeниe, вoзвpaщaeмoe l64a, yкaзывaeт cтaтичecкyю oблacть пaмяти, coдepжимoe кoтopoй пepeзaпиcывaeтcя oчepeдным вызoвoм.
НАЗВАНИЕ
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, а во внешнюю переменную
НАЗВАНИЕ
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - генерация равномерно распределенных псевдослучайных чисел
СИНТАКСИС
double drand48 ( )
double erand48 (xsubi) unsigned short xsubi [3];
long lrand48 ( )
long nrand48 (xsubi) unsigned short xsubi [3];
long mrand48 ( )
long jrand48 (xsubi) unsigned short xsubi [3];
void srand48 (seedval) long seedval;
unsigned short *seed48 (seed16v) unsigned short seed16v [3];
void lcong48 (param) unsigned short param [7];
ОПИСАНИЕ
Данное семейство функций порождает псевдослучайные числа с использованием широко известного линейного конгруэнтного алгоритма и 48-битной целой арифметики.
Функции drand48 и erand48 возвращают неотрицательные вещественные числа двойной точности, равномерно распределенные в интервале [0.0, 1.0).
Функции lrand48 и nrand48 возвращают неотрицательные целые числа типа long, равномерно распределенные в интервале [0, 2^31).
Функции mrand48 и jrand48 возвращают целые числа со знаком, типа long, равномерно распределенные в интервале [-2^31, 2^31).
Функции srand48, seed48 и lcong48 представляют собой инициализирующие точки входа, обращение к которым должно предшествовать вызову какой-либо из функций drand48, lrand48, mrand48. (Хотя это и не рекомендуется, в том случае, когда функции drand48, lrand48, mrand48 будут вызваны без предварительного обращения к инициализирующим точкам входа, подстановка постоянных начальных значений, принимаемых по умолчанию, будет произведена автоматически.) Функции erand48, nrand48 и jrand48 не требуют предварительного обращения к инициализирующим точкам входа.
Все программы работают, порождая последовательность 48-битных целых значений X [i] в соответствии с линейной конгруэнтной формулой
X [n+1] = (a * X [n] + c) mod m n 0
Параметр m = 2^48 и поэтому используется 48-битная целая арифметика. Если не было предварительного обращения к lcong48, для коэффициента a и аддитивной константы c будут приняты следующие значения:
a = 0x5DEECE66D = 0273673163155 c = 0xB = 013
НАЗВАНИЕ
exp, log, log10, pow, sqrt - показательная, логарифмическая, степенная функции и функция извлечения квадратного корня
СИНТАКСИС
#include <math.h>
double exp (x) double x;
double log (x) double x;
double log10 (x) double x;
double pow (x, y) double x, y;
double sqrt (x) double x;
ОПИСАНИЕ
Функция exp возвращает e^x.
Функция log возвращает натуральный логарифм аргумента x. Значение x должно быть положительным.
Функция log10 возвращает логарифм по основанию 10 аргумента x. Значение x должно быть положительным.
Функция pow возвращает x^y. Если значение x равно 0, то значение y должно быть положительным. Если значение x отрицательно, то значение y должно быть целым.
Функция sqrt возвращает неотрицательное значение квадратного корня из x. Значение x не может быть отрицательным.
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
Функция exp возвращает значение HUGE [см. ], если представление результирующего значения приводит к переполнению, и 0 - если к исчезновению порядка. В обоих случаях переменной errno присваивается значение ERANGE.
При неположительных аргументах функции log и log10 возвращают значение -HUGE и переменной errno присваивается значение EDOM. Кроме того, в стандартный протокол выдается сообщение о выходе за границы области определения или, при x=0, о попадании в точку сингулярности.
Функция pow возвращает нулевое значение, а переменной errno присваивается значение EDOM в случаях:
Если x=0 и значение y неположительно. Если значение x отрицательно и y не является целым.
В обоих случаях в стандартный протокол будет выдано сообщение о выходе за границы области определения. Если представление результирующего значения функции pow приводит к переполнению или к исчезновению порядка, то pow возвращает соответственно +HUGE, -HUGE или 0. Переменной errno присваивается значение ERANGE.
Функция sqrt возвращает нулевое значение, а переменной errno присваивается значение EDOM в случае, если x отрицательно. В стандартный протокол будет выдано сообщение о выходе за границы области определения.
Изложенная процедура обработки ошибок может быть изменена посредством функции .
НАЗВАНИЕ
frexp, ldexp, modf - манипуляции над компонентами вещественных чисел
СИНТАКСИС
double frexp (value, eptr) double value; int *eptr;
double ldexp (value, exp) double value; int exp;
double modf (value, iptr) double value, *iptr;
ОПИСАНИЕ
Всякое ненулевое число может быть единственным образом записано в форме
x * 2^n
где мантисса (x) находится в диапазоне 0.5 |x| < 1.0, а порядок (n) являет собой целое число. Для аргумента value, заданного как вещественное число двойной точности, функция frexp возвращает значение мантиссы с двойной точностью и помещает значение порядка по адресу, задаваемому указателем eptr. В случае value, равного 0, функция frexp оба результата выдает нулевыми.
Функция ldexp возвращает величину (value * 2^exp).
Функция modf возвращает дробную часть аргумента value (со знаком), а целую часть (получаемую отбрасыванием дробной) помещает по адресу, задаваемому указателем iptr.
ДИАГНОСТИКА
Если при обращении к функции ldexp возникнет переполнение, то будет возвращено, в зависимости от знака value, значение +HUGE или -HUGE [см. ], а переменной errno будет присвоено значение ERANGE. Если же результирующее число, напротив, окажется слишком малым, чтобы его можно было представить, то функцией ldexp будет возвращено нулевое значение, а переменной errno будет присвоено значение ERANGE.
НАЗВАНИЕ
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.
Изложенная процедура обработки ошибок может быть изменена посредством функции .
НАЗВАНИЕ
l3tol, ltol3 - преобразование 3-байтных целых чисел в длинные целые и обратно
СИНТАКСИС
void l3tol (lp, cp, n) long *lp; char *cp; int n;
void ltol3 (cp, lp, n) char *cp; long *lp; int n;
ОПИСАНИЕ
Функция l3tol преобразует список из n трехбайтных целых, упакованных в цепочку символов, в список длинных целых чисел. Указателем на цепочку является аргумент cp, на список длинных целых - lp.
Функция ltol3 осуществляет обратное преобразование из длинных целых (lp) в трехбайтные целые числа (cp).
Описанные функции полезны при работе с файловой системой, поскольку номера блоков являются трехбайтными целыми числами.
СМ. ТАКЖЕ
.
ОГРАНИЧЕНИЯ
Значения длинных целых чисел являются машинно-зависимыми величинами, поскольку на разных компьютерах возможен различный порядок расположения байт в числе.
НАЗВАНИЕ
labelit - присваивание имен файловым системам
СИНТАКСИС
/etc/labelit файловая_система [имя_системы имя_тома [-n]]
ОПИСАНИЕ
Команда labelit служит для присваивания имен размонтированным файловым_системам на диске или магнитной ленте. Файловая_система задается именем содержащего ее специального файла, соответствующего диску (например, /dev/dsk/hd0s1) или ленте (/dev/rmt).
Если необязательные аргументы опущены, команда labelit выдает на стандартный вывод текущее имя файловой системы и текущее имя тома, а также размер файловой системы, количество описателей файлов и другие сведения.
Аргумент имя_системы задает имя, которое будет сообщаться при монтировании файловой системы.
Имя_тома обычно соответствует наклейке на дискете или кассете с лентой.
Для файловых систем на диске имена системы и тома записываются в суперблок.
Опция -n указывается при присваивании имен файловым системам на магнитной ленте. Содержимое ленты при этом теряется.
СМ. ТАКЖЕ
.
в Справочнике пользователя.
в Справочнике программиста.
СЮРПРИЗЫ
Размер файловой системы выдается в 512-байтных блоках, хотя строкой ниже и сообщается, что единицей измерения служит 1 Кб.
ИМЯ
last - Показывает последние вхождения в систему пользователей и терминалов.
СИНТАКСИС
last [-n limit] [-l tty] [-v] [name]
ОПИСАНИЕ
Команда last проверяет файл wtmp, который содержит записи о вхождениях и выходах из системы, для того чтобы получить информацию о пользователе, последовательном соединении или некоторой группе пользователей и их соединении. Аргументы задают имя пользователя и/или имя терминала.
Команда last -l tty01 root будет перечислять все сеансы пользователя с именем "root" так же как все сиансы с терминала, задаваемого файлом /dev/tty01. Команда last печатает сеансы указаных пользователей и терминалов, включая имя вхождений в систему, используемое соединение, имя устройства, идентификатор процесса плюс время начала и время завершения.
Команда last без аргументов печатает запись всех вхождений и выходов из системы в обратном порядке.
ОПЦИИ
ФАЙЛЫ
/etc/wtmp база данных для вхождений в систему
СМ. ТАКЖЕ
, , , acctcom(8),
ИМЯ
lastcomm - показывает последние выполненные команды в обратном порядке
СИНТАКСИС
lastcomm [-f file] [command ...] [user ...] [terminal ...]
ОПИСАНИЕ
Lastcomm выдает информацию о предыдущих выполненных командах. Без аргументов команда выдает на экран информацию о выполненных командах в текущее время записанную в файле /var/account/acct.
ОПЦИИ
К примеру команда
lastcomm a.out root ttyd0
выдаст информацию о всех командах a.out выполненных пользователем root на терминале ttyd0.
Информация для каждой команды содержит:
Флаги означают:
``S'' - команда выполнена суперпользователем.
``F'' - команда запущена после разветвления, но без последующего выполнения.
``C'' - команда выполнена в PDP-11 совместимом режиме.
``D'' - команда прервана с генерацией .core - файла.
with the generation of a core file, and
``X'' - команда прервана с сигналом.
ФАЙЛЫ
/var/account/acct файл подсчетов по умолчанию.
СМ. ТАКЖЕ
, sigvec(2), acct(5), core(5)
ИСТОРИЯ
Команда lastcomm появилась в 3.0BSD.
НАЗВАНИЕ
lbp - фильтр для лазерного принтера
СИНТАКСИС
lbp [-k] [файл ...]
ОПИСАНИЕ
Команда lbp прочитывает данные со стандартного ввода или из файла и интерпретирует встретившиеся команды форматирования. По этим командам генерируются управляющие последовательности для лазерного принтера Canon LBP-8.
Опция -k используется для игнорирования команд форматирования. Она может оказаться полезной при выводе файла, содержащего команды форматирования для lbp, на другой принтер.
Все команды форматирования для lbp начинаются с символа CTRL+B (код ASCII 2). В приводимом ниже описании команд этот символ не указан, но подразумевается.
Команды управления шрифтом:
Эти команды не обязательно исключают друг друга, но относятся только к набору 10 символов/дюйм (кроме режима подчеркивания); курсив и жирный шрифт взаимно исключают друг друга (при использовании встроенного алфавита).
Стандартные форматы вывода:
Специальные функции:
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
Диагностические сообщения команды не нуждаются в пояснениях.
НАЗВАНИЕ
lckclnt - создание клиентских выходов для администратора защиты
СИНТАКСИС
lckclnt [ nclienthandles ]
ОПИСАНИЕ
Команда lckclnt назначает транспортные окончания (без установления логического соединения), которые используются для создания клиентских выходов. Программы администратора защиты получают клиентские выходы на время работы RPC.
Nclienthandles - количество выделенных клиентских выходов. Значение этого параметра ограничивает число параллельно выполняемых операций администратора защиты (по работе с клиентами) и должно основываться на ожидаемой нагрузке. Если возникает потребность в дополнительных клиентских выходах, можно запустить больше процессов lckclnt. Количество клиентских выходов, доступных программам администратора защиты, складывается из числа клиентских выходов, выделенных каждой lckclnt-программе. Удаление lckclnt-процесса сократит число клиентских выходов на то количество, которое изначально было создано этим процессом.
ФАЙЛЫ
/dev/inet/udp устройство UDP
СМ. ТАКЖЕ
НАЗВАНИЕ
ld - редактор связей для об ектных файлов обычного формата
СИНТАКСИС
ld [-e вх_имя] [-f заполнитель] [-l библ] [-m] [-o вых_файл] [-r] [-a] [-s] [-t] [-uнеоп_имя] [-x] [-z] [-Lкаталог] [-М] [-N] [-V] [-VS номер] [-Y[LU],каталог] файл ...
ОПИСАНИЕ
Команда ld об единяет несколько об ектных файлов в один, размещает команды и данные, разрешает внешние ссылки и генерирует таблицу имен для символьной отладки. В простейшем случае задаются имена нескольких об ектных программ, и редактор связей об единяет их в один об ектный модуль, который может затем или выполняться, или использоваться в качестве исходного при последующих вызовах ld. Результат редактирования связей помещается в файл с именем a.out, который является выполняемым, если во время работы не было зафиксировано ошибок. Если какой-либо исходный файл не является об ектным, ld предполагает, что это либо текстовый файл с директивами для редактора связей, либо архивная библиотека.
Библиотеки, являющиеся аргументами, обрабатываются ровно один раз, когда до них доходит очередь по списку аргументов. Библиотека может быть либо перемещаемой архивной, либо разделяемой. Загружаются только те подпрограммы, на которые есть неразрешенные внешние ссылки. Таблица имен библиотеки (архива) просматривается последовательно, причем столько раз, сколько необходимо для разрешения внешних ссылок на библиотечные подпрограммы. Тем самым порядок следования элементов библиотеки оказывается несущественным, если только какое-либо внешнее имя не определяется в нескольких элементах библиотеки.
Редактор связей ld распознает нижеследующие опции. Обратите внимание на отсутствие пробелов между флагом -u и аргументом опции неоп_имя, между -L и каталогом.
-e вх_имя Установить подразумеваемый адрес входа в результирующий файл равным адресу об екта вх_имя. Без этой опции подразумеваемый адрес равен 0.
-f заполнительЗаполнить указанным значением (целым числом от 0 до 32767) "дыры" в выходных секциях и секциях неинициализированных данных.
-l библ Использовать библиотеку с именем libбибл.a, где библ является цепочкой символов длиной не более 7. Библиотека просматривается, когда встречается ее имя, поэтому порядок указания опции -l существенен. По умолчанию библиотеки разыскиваются в каталогах LIBDIR и LLIBDIR.
-m Выдать карту входных/выходных секций на стандартный вывод.
-o вых_файл Вывести результат редактирования связей в файл с именем вых_файл. По умолчанию используется имя a.out.
-r Оставить в выходном об ектном файле информацию о настройке ссылок. Она нужна, если выходной файл будет входным при последующем редактировании связей. Редактор связей не считает ошибкой наличие неразрешенных ссылок; просто результирующий файл не будет выполняемым.
-a Создать абсолютный файл. Эта опция работает по умолчанию, если не задается опция -r. В совокупности с опцией -r опция -a обеспечивает выделение памяти для общих глобальных об ектов.
-s Не помещать в выходной об ектный файл таблицу имен и информацию о номерах строк.
-t Отказаться от выдачи предупреждений при многократном определении об ектов с разными размерами.
-uнеоп_имя Занести в таблицу имен об ект неоп_имя как неопределенный. Такая возможность полезна, когда загружаются только библиотечные файлы, поскольку в начальный момент таблица имен пуста и нужна "затравка" в виде неразрешенной ссылки для загрузки из библиотеки первой программы.
-x Не помещать локальные (не .globl) имена в выходную таблицу имен; помещать только внешние и статические имена. Использование этой опции несколько уменьшает размер выходного файла.
-z Не размещать что-либо по нулевому адресу. Эта опция предоставляет возможность обнаружить нулевые указатели во время выполнения.
-Lкаталог Изменить алгоритм поиска библиотек libбибл.a: искать их сначала в заданном каталоге, а затем в каталогах LIBDIR и LLIBDIR. Эта опция работает только в том случае, если в командной строке она предшествует опции -l.
-М Выдавать сообщение для каждого многократно определенного внешнего об екта.
-N Расположить секцию команд в самом начале сегмента команд, а не за всеми заголовками, и в образе памяти поместить секцию данных непосредственно за секцией команд.
-V Вывести информацию о версии редактора связей.
-VS номер Использовать десятичный номер для идентифицикации версии выходного файла a.out. Номер версии помещается в заголовок файла.
-Y[LU],каталог Изменить стандартный каталог, используемый для поиска библиотек. Если задано L, то первый стандартный каталог, который просматривает редактор связей ld, LIBDIR, замещается указанным каталогом. Если задано U и редактор связей ld работает со вторым стандартным каталогом LLIBDIR, то LLIBDIR замещается указанным каталогом. Если редактор связей ld работает только с одним стандартным каталогом и задано U, то печатается предупреждение и опция игнорируется.
НАЗВАНИЕ
ldahread - чтение архивного заголовка элемента архивного файла
СИНТАКСИС
#include <stdio.h>
#include <ar.h>
#include <filehdr.h>
#include <ldfcn.h>
int ldahread (ldptr, arhead) LDFILE *ldptr; ARCHDR *arhead;
ОПИСАНИЕ
Если TYPE (ldptr) есть магическое число архивного файла, функция ldahread читает архивный заголовок об ектного файла обычного формата, ассоциированного с указателем ldptr, в область памяти, начиная с адреса arhead.
Функция ldahread возвращает значение FAILURE, если:
TYPE (ldptr) не соответствует архивному файлу. Не удается прочитать архивный заголовок.
В остальных случаях возвращается SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к об ектным файлам libld.a.
СМ. ТАКЖЕ
, , , .
НАЗВАНИЕ
ldclose, ldaclose - закрыть об ектный файл обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
int ldclose (ldptr) LDFILE *ldptr;
int ldaclose (ldptr) LDFILE *ldptr;
ОПИСАНИЕ
Функции и ldclose обеспечивают унифицированный доступ как к отдельным об ектным файлам, так и к об ектным файлам, входящим в состав архивов. С помощью этих функций архив об ектных файлов может быть обработан так, как если бы он был последовательностью отдельных об ектных файлов обычного формата.
Если значение TYPE (ldptr) не соответствует архивному файлу, ldclose закрывает файл и освобождает память, которую занимала структура LDFILE, ассоциированная с аргументом ldptr. Если TYPE (ldptr) является магическим числом архивного файла, и если в архиве есть еще файлы, то ldclose устанавливает OFFSET (ldptr) на файловый адрес начала следующего элемента архива и возвращает значение FAILURE; при этом структура LDFILE подготавливается для последующего вызова ldopen. Во всех остальных случаях ldclose возвращает значение SUCCESS.
Функция ldaclose закрывает файл и освобождает память, которую занимала структура LDFILE, ассоциированная с аргументом ldptr. Ldaclose всегда возвращает SUCCESS. Эта функция часто используется в сочетании с ldaopen.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к об ектным файлам libld.a.
СМ. ТАКЖЕ
, , .
ИМЯ
ldd - список связей динамических объектов
СИНТАКСИС
ldd [filename ...]
ОПИСАНИЕ
ldd показывает все части объектов, нуждающиеся в запуске данной программы.
СМ. ТАКЖЕ
, ld.so(1), nm(1)
НАЗВАНИЕ
ldfcn - программы доступа к об ектным файлам обычного формата
СИНТАКСИС
#include <stdio.h> #include <filehdr.h> #include <ldfcn.h>
ОПИСАНИЕ
Программы доступа к об ектным файлам обычного формата это совокупность функций, обеспечивающих чтение об ектных файлов и архивов, содержащих объектные файлы. Хотя вызывающая программа должна "знать" детали структуры обрабатываемых ею частей об ектного файла, использование программ доступа исключает необходимость знания структуры файла в целом.
Интерфейс между вызывающей программой и программами доступа основан на определяемом типе LDFILE. Тип определен во включаемом файле <ldfcn.h> как структура struct ldfile. Основное назначение этой структуры - обеспечить унифицированный доступ как к отдельным об ектным файлам, так и к архивам объектных файлов.
Функция размещает и инициализирует структуру LDFILE, возвращая в вызывающую программу указатель на структуру. Доступ к полям структуры LDFILE обеспечивается макросами, определенными в <ldfcn.h>:
LDFILE *ldptr; TYPE (ldptr) Магическое число, служащее для различения элементов архива и отдельных объектных файлов. IOPTR (ldptr) Указатель на файл, возвращаемый функцией fopen, и используемый стандартными функциями ввода/вывода. OFFSET (ldptr) Файловый адрес начала объектного файла; не 0, если файл является элементом архива. HEADER (ldptr) Структура заголовка объектного файла.
Функции доступа подразделяются на 4 группы:
Открытие и закрытие объектного файла:
ldopen(3X) и ldaopen [см. ] (открытие объектного файла); ldclose(3X) и ldaclose [см. ] (закрытие объектного файла).
Чтение заголовков, данных из таблицы имен и информации о номерах строк:
ldahread(3X) (чтение архивного заголовка элемента архивного файла); ldfhread(3X) (чтение заголовка объектного файла); ldshread(3X) и ldnshread [см. ] (чтение заголовка секции объектного файла); ldtbread(3X) (чтение элемента таблицы имен объктного файла); ldgetname(3X) (получение символического имени из элемента таблицы имен или из таблицы цепочек); ldlread(3X), ldlinit, ldlitem [см. ] (работа с таблицей номеров строк).
НАЗВАНИЕ
ldfhread - чтение заголовка об ектного файла обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
int ldfhread (ldptr, filehead) LDFILE *ldptr; FILHDR *filehead;
ОПИСАНИЕ
Функция ldfhread читает заголовок об ектного файла обычного формата, ассоциированного с указателем ldptr, в область памяти, начиная с адреса filehead.
Если не удается прочитать заголовок, функция ldfhread возвращает значение FAILURE, в противном случае возвращается значение SUCCESS.
В большинстве случаев можно избежать применения функции ldfhread, используя макрос HEADER (ldptr), определенный во включаемом файле <ldfcn.h> [см. ]. Доступ к элементу заголовка с именем fieldname осуществляется посредством конструкции HEADER (ldptr).fieldname.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к об ектным файлам libld.a.
СМ. ТАКЖЕ
, , .
НАЗВАНИЕ
ldgetname - получение текста имени элемента таблицы имен об ектного файла
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <syms.h>
#include <ldfcn.h>
char *ldgetname (ldptr, symbol) LDFILE *ldptr; SYMENT *symbol;
ОПИСАНИЕ
Функция ldgetname возвращает указатель на имя, связанное с элементом symbol таблицы имен. Текст имени как цепочка символов помещается в локальный статический буфер функции ldgetname и обновляется при каждом вызове, поэтому для сохранения текста вызывающая программа должна его скопировать.
Использование ldgetname не вызывает каких-либо проблем, связанных с совместимостью об ектных файлов снизу вверх. При невозможности получения имени функция возвращает значение NULL (определенное во включаемом файле <stdio.h>). Это может произойти по следующим причинам:
Если не найдена таблица цепочек. Если под таблицу цепочек не хватает памяти. Если обнаруживается некорректность таблицы цепочек. Если смещение имени в таблице цепочек указывает за пределы таблицы.
Как правило, ldgetname вызывается сразу после успешного обращения к для извлечения текста имени, соответствующего элементу таблицы, прочитанному функцией ldtbread.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к об ектным файлам libld.a.
СМ. ТАКЖЕ
, , , , .
НАЗВАНИЕ
ldlread, ldlinit, ldlitem - работа с таблицей номеров строк, хранящейся в объектном файле обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <linenum.h>
#include <ldfcn.h>
int ldlread (ldptr, fcnindx, linenum, linent) LDFILE *ldptr; long fcnindx; unsigned short linenum; LINENO *linent;
int ldlinit (ldptr, fcnindx) LDFILE *ldptr; long fcnindx;
int ldlitem (ldptr, linenum, linent) LDFILE *ldptr; unsigned short linenum; LINENO *linent;
ОПИСАНИЕ
Функция ldlread предназначена для поиска информации в таблице номеров строк, хранящейся в объектном файле, указанном аргументом ldptr. Поиск начинается с информа- ции о первой строке некоторой функции и ограничивается данными, относящимися к этой функции. Функция задается аргументом fcnindx - индексом имени функции в таблице имен объектного файла. Ldlread читает информацию о пер- вой из строк, номер которой не меньше linenum, в об- ласть памяти с адресом linent.
Функции ldlinit и ldlitem совместно делают то же, что и ldlread. Вызов ldlinit (или ldlread) инициализирует по- иск, после чего ldlitem используется для извлечения последовательности элементов таблицы номеров строк, от- носящихся к одной функции. Ldlinit определяет, где на- ходятся данные о строках, принадлежащих функции fcnindx. Ldlitem ищет и читает информацию о первой из строк, номер которой не меньше linenum, в область памя- ти с адресом linent.
Все три функции возвращают значения SUCCESS или FAILURE. Ldlread возвращает FAILURE, если:
В объектном файле нет таблицы номеров строк. Аргумент fcnindx не является индексом функции в таблице имен. В таблице номеров строк нет элемента с номером, не меньшим linenum.
Функция ldlinit возвращает FAILURE, если:
В объектном файле нет таблицы номеров строк. Аргумент fcnindx не является индексом функции в таблице имен.
Функция ldlitem возвращает FAILURE, если:
В таблице номеров строк нет элемента с номером, не меньшим linenum.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным фай- лам libld.a.
СМ. ТАКЖЕ
, , , .
НАЗВАНИЕ
ldlseek, ldnlseek - поиск информации о номерах строк, относящихся к секции объектного файла
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
int ldlseek (ldptr, sectindx) LDFILE *ldptr; unsigned short sectindx;
int ldnlseek (ldptr, sectname) LDFILE *ldptr; char *sectname;
ОПИСАНИЕ
Функция ldlseek разыскивает в объектном файле, ассоциированном с аргументом ldptr, таблицу номеров строк, относящихся к секции с номером sectindx (секции нумеруются с единицы).
Функция ldnlseek отличается только тем, что секция задается именем *sectname.
Обе функции возвращают значение FAILURE, если:
В объектом файле нет указанной секции. Не удается найти информацию о номерах строк, относящихся к указанной секции.
В остальных случаях обе функции возвращают SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , , .
НАЗВАНИЕ
ldohseek - поиск необязательного заголовка объектного файла обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
int ldohseek (ldptr) LDFILE *ldptr;
ОПИСАНИЕ
Функция ldohseek разыскивает необязательный заголовок объектного файла обычного формата, ассоциированного в данный момент с аргументом ldptr.
Функция возвращает значение FAILURE, если в указанном файле не удается найти дополнительный заголовок; в противном случае возвращается SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , , .
НАЗВАНИЕ
ldopen, ldaopen - открыть объектный файл обычного формата на чтение
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
LDFILE *ldopen (filename, ldptr) char *filename; LDFILE *ldptr;
LDFILE *ldaopen (filename, oldptr) char *filename; LDFILE *oldptr;
ОПИСАНИЕ
Функции ldopen и обеспечивают унифицированный доступ как к отдельным объектным файлам, так и к объектным файлам, входящим в состав архивов. С помощью этих функций архив объектных файлов может быть обработан так, как если бы он был последовательностью отдельных объектных файлов обычного формата.
Если аргумент ldptr имеет значение NULL, функция ldopen открывает файл filename, размещает и инициализирует структуру LDFILE и возвращает указатель на эту структуру.
Если значение ldptr соответствует открытому файлу и TYPE (ldptr) является магическим числом архивного файла, ldopen инициализирует стуктуру LDFILE для обработки следующего элемента архива filename.
Функции ldopen и предназначены для совместной работы. Ldclose возвращает значение FAILURE только в том случае, когда TYPE (ldptr) является магическим числом архива и в архиве еще есть необработанные файлы. В этом единственном случае можно вызывать ldopen с текущим значением ldptr. Во всех других случаях, в частности, когда открывается файл с новым именем, следует вызывать ldopen с аргументом ldptr, равным NULL.
Схема использования ldopen и такова:
/* Для каждого из обрабатываемых файлов */
ldptr = NULL; do { if ((ldptr = ldopen (filename, ldpr)) == NULL) { /* Проверить магическое число */ /* Обработать файл */ } } while (ldclose (ldptr) == FAILURE);
Функция ldaopen служит для повторного открытия объектного файла. Если значение oldptr отлично от NULL, ldaopen заново открывает файл с именем filename, порождает новую структуру LDFILE, копируя из структуры, указанной в oldptr, поля TYPE, OFFSET и HEADER, и возвращает указатель на новую структуру. Старый указатель oldptr и новый указатель могут быть использованы одновременно и независимо для чтения разных частей объектного файла. Например, один из указателей может последовательно продвигаться по информации о настройке ссылок, а другой - по элементам таблицы имен.
Функции ldopen и ldaopen открывают файл на чтение. Обе функции возвращают NULL, если файл filename открыть не удается, или если под структуру LDFILE не хватает памяти. Успешное открытие не гарантирует, что указанный файл является объектным.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , .
НАЗВАНИЕ
ldrseek, ldnrseek - поиск информации о настройке ссылок, относящейся к секции объектного файла обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
int ldrseek (ldptr, sectindx) LDFILE *ldptr; unsigned short sectindx;
int ldnrseek (ldptr, sectname) LDFILE *ldptr; char *sectname;
ОПИСАНИЕ
Функция ldrseek разыскивает в объектном файле, ассоциированном с аргументом ldptr, информацию о настройке ссылок, относящуюся к секции с номером sectindx (секции нумеруются с единицы).
Функция ldnrseek отличается только тем, что секция задается именем *sectname.
Обе функции возвращают значение FAILURE, если:
В объектом файле нет указанной секции. Не удается найти информацию о настройке ссылок, относящуюся к указанной секции.
В остальных случаях обе функции возвращают SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , , .
НАЗВАНИЕ
ldshread, ldnshread - чтение заголовка секции объектного файла обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <scnhdr.h>
#include <ldfcn.h>
int ldshread (ldptr, sectindx, secthead) LDFILE *ldptr; unsigned short sectindx; SCNHDR *secthead;
int ldnshread (ldptr, sectname, secthead) LDFILE *ldptr; char *sectname; SCNHDR *secthead;
ОПИСАНИЕ
Функция ldshread читает из объектного файла, ассоциированного с аргументом ldptr, заголовок секции с номером sectindx (секции нумеруются с единицы). Заголовок читается в область памяти с адресом secthead.
Функция ldnshread отличается только тем, что секция задается именем *sectname.
Обе функции возвращают значение FAILURE, если:
В объектом файле нет указанной секции. Не удается прочитать заголовок указанной секции.
В остальных случаях обе функции возвращают SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , .
НАЗВАНИЕ
ldsseek, ldnsseek - поиск секции объектного файла обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
int ldsseek (ldptr, sectindx) LDFILE *ldptr; unsigned short sectindx;
int ldnsseek (ldptr, sectname) LDFILE *ldptr; char *sectname;
ОПИСАНИЕ
Функция ldsseek разыскивает в объектном файле, ассоциированном с аргументом ldptr, секцию с номером sectindx (секции нумеруются с единицы).
Функция ldnsseek отличается только тем, что секция задается именем *sectname.
Обе функции возвращают значение FAILURE, если не удается найти информацию об указанной секции. В противном случае функции возвращают значение SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , , .
НАЗВАНИЕ
ldtbindex - вычисление индекса элемента таблицы имен объектного файла
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <sysms.h>
#include <ldfcn.h>
long ldtbindex (ldptr) LDFILE *ldptr;
ОПИСАНИЕ
Функция ldtbindex возвращает индекс (типа long) элемента таблицы имен, начинающегося в текущей позиции об ектного файла, ассоциированного с аргументом ldptr. Первый элемент имеет индекс 0.
Полученный индекс может быть использован при вызове функции для чтения элемента. Однако, поскольку функция ldtbindex возвращает индекс элемента таблицы имен, начинающегося в текущей позиции файла, при вызове сразу после чтения элемента она вернет индекс следующего элемента.
Ldtbindex возвращает значение FAILURE, если:
В объектном файле нет таблицы имен. Текущая позиция файла не соответствует началу элемента таблицы имен.
В остальных случаях функция возвращает SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , , , .
НАЗВАНИЕ
ldtbread - чтение по индексу элемента таблицы имен об ектного файла
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <sysms.h>
#include <ldfcn.h>
long ldtbread (ldptr, symindex, symbol) LDFILE *ldptr; long symindex; SYMENT *symbol;
ОПИСАНИЕ
Функция ldtbread читает элемент таблицы имен, указанный его индексом symindex, из объектного файла, ассоциированного с аргументом ldptr (первый элемент таблицы имен имеет индекс 0).
Ldtbread возвращает значение FAILURE, если:
Значение symindex не является допустимым индексом элемента таблицы имен. Чтение завершилось неудачно.
В остальных случаях функция возвращает SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , , , .
НАЗВАНИЕ
ldtbseek - поиск таблицы имен объектного файла обычного формата
СИНТАКСИС
#include <stdio.h>
#include <filehdr.h>
#include <ldfcn.h>
long ldtbseek (ldptr) LDFILE *ldptr;
ОПИСАНИЕ
Функция ldtbseek разыскивает в объектном файле, ассоциированном с аргументом ldptr, таблицу имен.
Ldtbseek возвращает значение FAILURE, если таблицу имен найти не удается (например потому, что она была удалена). В противном случае функция возвращает SUCCESS.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
, , , .
ИМЯ
leave - служба по напоминанию
СИНТАКСИС
leave [[+]hhmm]
ОПИСАНИЕ
Leave ожидает указанного времени, и затем сообщает Вам, что время подошло и Вы должны идти.
ОПЦИИ
Если аргументы не указаны, leave спрашивает: "When do you have to leave?" "Когда Вы уходите?". На этот запрос надо ввести время. Для каждодневного напоминания достаточно включить командную строку с временем в файл .login или .profile.
Leave игнорирует прерывания, попытки выхода, терминирование. Для останова процесса надо использовать команду kill -9 с указанием идентификатора процесса leave.
СМ. ТАКЖЕ
ИСТОРИЯ
Команда leave появилась в 3.0BSD.
НАЗВАНИЕ
lex - генератор программ простого лексического анализа
СИНТАКСИС
lex [-r] [-c] [-t] [-v] [-n] [файл ...]
ОПИСАНИЕ
Команда lex генерирует программы, которые можно использовать для простого лексического анализа текста.
Входные файлы (по умолчанию - стандартный ввод) содержат цепочки символов и выражения, подлежащие распознаванию, и операторы на языке C, которые выполняются в случае успеха распознавания.
Генерируется программа lex.yy.c. Будучи загруженной вместе с библиотекой, она для каждой распознанной цепочки выполняет соответствующие C-операторы, а остальные фрагменты входного файла копирует в выходной файл без изменений. Распознанная цепочка помещается во внешний символьный массив yytext. Сопоставление цепочек выполняется в том порядке, в котором они указаны в файле. Цепочки символов могут содержать квадратные скобки, которые указывают классы символов (например, [abx-z] означает a, b, x, y и z), и операторы *, + и ?, обозначающие повторение предыдущего символа или класса символов, соответственно, любое неотрицательное число раз, любое положительное число, 0 или один раз. Символ . - это класс всех символов ASCII, кроме перевода строки. В дополнение, поддерживаются скобки (группировка символов) и вертикальная черта (альтернация). Запись r{d,e} в правиле обозначает вхождения регулярного выражения r между d и e. Она имеет больший приоритет, чем |, но меньший, чем *, ?, + и конкатенация. Символ ^ в начале выражения означает, что сопоставление должно начинаться с начала строки, символ $ в конце выражения требует, чтобы следующим символом в сопоставляемой цепочке был символ перевода строки. Символ / в выражении обозначает, что только часть выражения вплоть до наклонной черты помещается в yytext, но оставшаяся часть должна успешно сопоставляться. Символ оператора может использоваться как обычный символ, если он взят в кавычки или если ему предшествует \. Пример: выражение [a-zA-Z]+ успешно сопоставляется с цепочкой букв.
Три подпрограммы определены как макросы: input( ) - прочитать символ; unput(c) - заменить прочитанный символ; output(c) - поместить выходной символ. Все они определены в терминах стандартных потоков, но их описание можно изменить. Генерируемая программа-анализатор называется yylex( ), библиотека содержит программу main( ), которая вызывает анализатор. Действие REJECT в правой части правила обозначает отказ от текущего сопоставления и переход к поиску следующего сопоставления; функция yymore( ) накапливает дополнительные символы в том же массиве yytext; функция yyless(p) выталкивает порцию сопоставленной цепочки символов, начиная с позиции p, которая должна быть между yytext и yytext+yyleng. Макросы input и output используют файлы yyin и yyout для чтения и записи (по умолчанию это файлы stdin и stdout соответственно).
Строки, начинающиеся с пробела, считаются текстом на языке C и копируются в файл lex.yy.c; если они предшествуют строке %%, копирование выполняется в область внешних определений файла lex.yy.c. Все правила, как и в YACC, должны стоять после %%. Строки, стоящие до %% и начинающиеся не с пробела, определяют стоящую слева цепочку символов как остаток строки; данное определение затем можно использовать, указав эту цепочку в фигурных скобках { }. Отметим, что после подстановки скобки исчезнут.
ПРИМЕР
НАЗВАНИЕ
limits - включаемый файл, содержащий реализационно-зависимые константы
СИНТАКСИС
#include <limits.h>
ОПИСАНИЕ
Включаемый файл <limits.h> содержит список важных ограничений, налагаемых спецификой реализации операционной системы. Все значения являются десятичными.
#define ARG_MAX 5120 /* Макс. длина аргументов системного вызова exec */ #define CHAR_BIT 8 /* Кол-во бит в типе char */ #define CHAR_MAX 255 /* Макс. целое знач. в типе char */ #define CHAR_MIN 0 /* Мин. целое знач. в типе char */ #define CHILD_MAX 25 /* Макс. кол-во процессов у пользователя */ #define CLK_TCK 100 /* Кол-во тактов часов в секунде */ #define DBL_DIG 15 /* Кол-во цифр в мантиссе типа double */ #define DBL_MAX 1.79769313486231470e+308 /* Макс. значение типа double */ #define DBL_MIN 4.94065645841246544e-324 /* Мин. значение типа double */ #define FCHR_MAX 1048576 /* Макс. размер файла в байтах */ #define FLT_DIG 7 /* Кол-во цифр в мантиссе типа float */ #define FLT_MAX 3.40282346638528860e+38 /* Макс. значение типа float */ #define FLT_MIN 1.40129846432481707e-45 /* Мин. значение типа float */ #define HUGE_VAL 3.40282346638528860e+38 /* Результат функций из матем. библ. в случае ошибки */ #define INT_MAX 2147483647 /* Макс. знач. типа int */ #define INT_MIN -2147483648 /* Мин. знач. типа int */ #define LINK_MAX 1000 /* Макс. кол-во ссылок на файл */
#define LONG_MAX 2147483647 /* Макс. знач. типа long */ #define LONG_MIN -2147483648 /* Мин. знач. типа long */ #define NAME_MAX 14 /* Макс. кол-во символов в имени файла */ #define OPEN_MAX 20 /* Макс. кол-во открытых файлов у процесса */ #define PASS_MAX 8 /* Макс. кол-во символов в пароле */ #define PATH_MAX 256 /* Макс. кол-во символов в маршрутном имени файла */ #define PID_MAX 30000 /* Макс. знач. идентификатора процесса */ #define PIPE_BUF 5120 /* Макс. кол-во байт, атомарное при записи в канал */ #define PIPE_MAX 5120 /* Макс. кол-во байт, записыва- емых в канал за один раз */ #define SHRT_MAX 32767 /* Макс. знач. типа short */ #define SHRT_MIN -32768 /* Мин. знач. типа short */ #define STD_BLK 1024 /* Кол-во байт в физ. блоке ввода/вывода */ #define SYS_NMLN 9 /* Кол-во символов в имени данной UNIX-системы */ #define UID_MAX 60000 /* Макс. знач. идент. пользо- вателя или группы */ #define USI_MAX 4294967295 /* Макс. знач. типа unsigned */ #define WORD_BIT 32 /* Кол-во бит в слове или в типе int */
ИМЯ
line - Производит считывание одной строки.
СИНТАКСИС
line
ОПИСАНИЕ
Команда line производит копирование одной строки из стандартного ввода (до признака новой строки) и запись ее на устройство стандартного вывода. По достижению признака конца файла она возвращает код выхода 1 и обязательно производит вывод по крайней мере признака новой строки. Это часто используется файлами интерпретатора shell для чтения с терминала пользователя.
СМ. ТАКЖЕ
,
НАЗВАНИЕ
linenum - информация о номерах строк исходного текста в об ектном файле обычного формата
СИНТАКСИС
#include <linenum.h>
ОПИСАНИЕ
Если указана опция -g, то команда создает в об ектном файле элементы с информацией о номере каждой строки исходного текста, на которую можно поставить точку прерывания. Эта информация используется при отладке [см. ]. Структура элемента приведена ниже:
struct lineno { union { long l_symndx; /* Если l_lnno == 0, то номер элемента табл. имен, описывающего функцию */ long l_paddr; /* Физический адрес команд, соответст- вующих строке */ } l_addr; unsigned short l_lnno; /* Номер строки */ };
Нумерация строк начинается заново для каждой функции. У первого соответствующего функции элемента поле l_lnno равно 0, и в поле l_symndx содержится номер элемента таблицы имен, описывающего имя этой функции. У других элементов поле l_lnno не равно 0, и в l_paddr содержится адрес команд, соответствующих строке с номером l_lnno. Таким образом, общая структура имеет следующий вид:
описывающего функцию
описывающего функцию
СМ. ТАКЖЕ
a.out(4).
, в Справочнике пользователя.
НАЗВАНИЕ
link, unlink - создание или удаление ссылки на файл или каталог
СИНТАКСИС
/etc/link файл1 файл2 /etc/unlink файл
ОПИСАНИЕ
Команда link используется для создания имени файла (файл2), которое указывает на другой файл (файл1), то есть для создания ссылки на файл.
Ссылку на файл или каталог можно удалить с помощью команды unlink, однако, настоятельно рекомендуется вместо unlink использовать команды и .
Единственным различием между командами /rm(1) с одной стороны и link/unlink с другой является то, что последние ничего не проверяют - они просто выполняют системные вызовы и .
СМ. ТАКЖЕ
, в Справочнике пользователя.
, в Справочнике программиста.
ДИАГНОСТИКА
Эти команды могут выполняться только суперпользователем.
НАЗВАНИЕ
link - создание ссылки на файл
СИНТАКСИС
int link (path1, path2) char *path1, *path2;
ОПИСАНИЕ
Системный вызов link создает новую ссылку (элемент каталога) для существующего файла. Аргумент path1 указывает на маршрутное имя существующего файла, аргумент path2 - на маршрутное имя создаваемого элемента каталога.
Системный вызов link завершается неудачей и ссылка не создается, если выполнено хотя бы одно из следующих условий:
[ENOTDIR] Компонент одного из маршрутов не является каталогом. [ENOENT] Компонент одного из маршрутов не существует. [EACCES] Для компонента одного из маршрутов отсутствует право на поиск. [ENOENT] Файл, заданный маршрутным именем path1, не существует. [EEXIST] Ссылка, заданная маршрутным именем path2, существует. [EPERM] Файл, заданный маршрутным именем path1, является каталогом, а действующий идентификатор пользователя не есть идентификатор суперпользователя. [EXDEV] Маршрутные имена path1 и path2 указывают на разные логические устройства (файловые системы). [ENOENT] Аргумент path2 указывает на пустое маршрутное имя. [EACCES] Создание ссылки требует записи в каталог, права на запись в который нет. [EROFS] Создание ссылки требует записи в каталог, расположенный в файловой системе, доступной только на чтение. [EFAULT] Аргумент path1 или path2 указывает за пределы отведенного процессу адресного пространства. [EMLINK] Превышается максимально допустимое количество ссылок на файл. [EINTR] Во время выполнения системного вызова перехвачен сигнал. [ENOLINK] Маршрутное имя path1 или path2 указывает на удаленный компьютер, связи с которым в данный момент нет. [EMULTIHOP] Компоненты path1 или path2 требуют многократного обращения к удаленным компьютерам.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
НАЗВАНИЕ
lint - верификатор C-программ
СИНТАКСИС
lint [-a] [-b] [-h] [-u] [-v] [-x] [-l библ] [-n] [-p] [-c] [-o библ] файл ...
ОПИСАНИЕ
Команда lint пытается обнаружить в заданных файлах, содержащих C-программы, конструкции, которые, возможно, являются ошибочными, немобильными или излишними. Более строго, чем при компиляции, выполняется проверка соответствия типов. Среди обнаруживаемых дефектов - недостижимые операторы; циклы, в которые входят не с начала; описанные, но не используемые автоматические переменные; логические выражения с константными значениями. Кроме того, проверяется использование функций и обнаруживаются функции, возвращающие значения в одних местах, но не возвращающие в других; функции, вызываемые с различным числом аргументов или с аргументами разных типов; функции, значения которых не используются, и функции, значения которых не возвращаются, но используются.
Файлы-аргументы, имена которых оканчиваются на .c, считаются исходными C-файлами. Аргументы, имена которых оканчиваются на .ln, считаются результатом предыдущих вызовов lint с использованием опций -c или -o. Файлы .ln аналогичны об ектным (.o) файлам, которые создаются командой , если в качестве входных файлов заданы .c файлы. Файлы с другими расширениями игнорируются с выдачей предупреждения.
Программа lint обрабатывает все .c, .ln и llib-lбибл.ln (заданные указанием -l библ) файлы в том порядке, в котором они перечислены в командной строке. По умолчанию lint подсоединяет к концу списка файлов свою стандартную библиотеку C-программ llib-lc.ln. Однако, если используется опция -p, вместо стандартной подсоединяется мобильная C-библиотека программы lint llib-port.ln. Если опция -c не указана, второй проход lint проверяет этот список файлов на взаимную совместимость. В случае задания опции -c файлы .ln и llib-lбибл.ln игнорируются.
Можно указывать произвольное число опций и задавать их в командной строке в любом порядке вперемежку с именами файлов. Следующие опции используются для того, чтобы подавить выдачу некоторых сообщений.
ИМЯ
listalias - список пользовательских и системных алиасов.
СИНТАКСИС
listalias [ -s | -u ] [ regular-expression ]
ОПИСАНИЕ
Listalias выводит строки пользовательских и системных алиасов.
Каждая строка имеет форму:
<alias> <address> (<comment>)
Если в опциях указано регулярное выражение (regular-expression), то выводятся только алиасы, указанные в этом выражении, в противном случае выводится список всех алиасов.
Вывод отсортирован.
ОПЦИИ
АВТОР
Elm Development Group
СМ. ТАКЖЕ
checkalias(1L), elm(1L), elmalias(1L), newalias(1L)
ПРАВА КОПИРОВАНИЯ
Copyright 1988-1992 by The USENET Community Trust Derived from Elm 2.0, Copyright 1986, 1987 by Dave Taylor
НАЗВАНИЕ
ln - создание ссылки на файл
СИНТАКСИС
ln [-f] файл1 [файл2 ...] целевой_файл
ОПИСАНИЕ
Команда ln делает целевой_файл ссылкой на файл1. Файл1 не должен совпадать с целевым_файлом (будьте внимательны при использовании метасимволов shell'а). Если целевой_файл является каталогом, то в нем создаются ссылки на файл1, файл2,... с теми же именами. Только в этом случае можно указывать несколько исходных файлов.
Если целевой_файл существует и не является каталогом, его старое содержимое теряется. Если при этом обнаруживается, что в целевой_файл не разрешена запись, то выводится режим доступа к этому файлу [см. ] и запрашивается строка со стандартного ввода. Если эта строка начинается с символа y, то требуемые действия все же выполняются, при условии что у пользователя достаточно прав для удаления целевого_файла. Если была указана опция -f или стандартный ввод назначен не на терминал, то требуемые действия выполняются без всяких запросов. Целевой_файл наследует режим доступа к файлу1.
СМ. ТАКЖЕ
, , , , .
ОГРАНИЧЕНИЯ
Команда ln не создает ссылок между разными файловыми системами, поскольку они (файловые системы) могут добавляться и удаляться.
ИМЯ
locate - поиск файлов
СИНТАКСИС
locate pattern
ОПИСАНИЕ
Locate ищет в базе данных информацию для указанного выражения в pattern и выдает все пути для заданного имени файла. База данных переодически изменяется и содержит информацию о доступных по чтению для всех путях и именах файлов.
Нет необходимости указывать спецсимволы ? и *, поскольку locate будет искать именно заданное имя в строке pattern.
ФАЙЛЫ
/var/db/locate.database База данных /usr/libexec/locate.updatedb Скрипт для модернизирования базы данных
СМ. ТАКЖЕ
, fnmatch(3), locate.updatedb(8)
ПРИМЕЧАНИЯ
Locate может ошибаться в поиске файлов, поскольку ищет информацию о них в базе данных. Если файлы были удалены или переименованы, то locate может их не найти. Для более точного поиска используйте команду .
ИСТОРИЯ
Команда locate появилась в 4.4BSD.
ИМЯ
lock - Блокирует терминал пользователя.
СИНТАКСИС
lock [-v][-number]
ОПИСАНИЕ
Команда lock выдает пользователю запрос на пароль, затем снова запрашивает пароль для проверки и блокирует терминал до тех пор пока пароль не будет повторно введен. Если опция -number определена в команде lock, то терминал автоматически отключается и после нескольких минут дается возможность передачи управления другому пользователю.
Эта команда использует файл /etc/defalt/lock. Этот файл имеет две записи:
DEFLOGOUT = number MAXLOGOUT = number
Значение DEFLOGOUT определяет установленное по умолчанию время в минутах, в течение которого терминал останется заблокированным пока пользователь не отключится. Это значение по умолчанию не используется, если опция -number указана в командной строке. Если ни значение DEFLOGOUT, ни опция -number не определены, то используется значение MAXLOGOUT.
Значение MAXLOGOUT - это максимальное время в минутах, в течение которого пользователю разрешается заблокировать терминал. Если пользователь пытается блокировать терминал на более длительное время, чем это, команда lock выдает пользователю предупреждение, что он использовал ограничение по системному максимому времени. Если значение DEFLOGOUT, опция -number и значение MAXLOGOUT не указаны, то пользователь не может отключиться.
Значения DEFLOGOUT и MAXLOGOUT формируются системным администратором, чтобы отобразить запрос для терминалов данного рабочего места.
Блокировка может быть завершена уничтожением процесса блокировки. Это может сделать только привелигированный пользователь или пользователь вызвавший эту команду lock.
ОПЦИИ
ФАЙЛЫ
/etc/default/lock
ЗАМЕЧАНИЯ
Файл /etc/default/lock загружается следующими значениями по умолчанию:
DEFLOGOUT = 30 MAXLOGOUT = 60
ИМЯ
lock - блoкиpyeт пpoцecc в oпepaтивнoй пaмяти
СИНТАКСИС
int lock (flag) int flag;
ОПИСАНИЕ
Ecли apгyмeнт flag нe paвeн 0, тeкyщий пpoцecc блoкиpyeтcя, т.e. нe бyдeт выгpyжaтьcя из пaмяти зa иcключeниeм cлyчaя, кoгдa eмy пoтpeбyeтcя дoпoлнитeльнaя пaмять. Ecли apгyмeнт paвeн 0, пpoцecc paзблoкиpyeтcя. Этoт вызoв дoпycтим тoлькo для пpoцecca c пpивилeгиpoвaнным эффeктивным пoльзoвaтeльcким ID.
ЗAМEЧAНИЯ
Блoкиpoвaниe пpoцeccoв мoжeт пpивoдить к тyпикy. B cиcтeмe c мaлым oбъeмoм oпepaтивнoй пaмяти нe cлeдyeт пoльзoвaтьcя этим вызoвoм. Лyчшe вceгo блoкиpoвaть пpoцecc вcкope пocлe cиcтeмнoй зaгpyзки, тaк кaк тoгдa бyдeт блoкиpoвaтьcя yчacтoк в кoнцe пaмяти.
Этa ocoбeннocть cпeцифичнa для XENIX и мoжeт oтcyтcтвoвaть в дpyгиx peaлизaцияx UNIX. Пpoгpaммы, иcпoльзyющиe этoт вызoв, дoлжны кoмпoнoвaтьcя c флaгoм -lx.
НАЗВАНИЕ
lockd - сетевой блокирующий процесс
СИНТАКСИС
/etc/lockd [-d debuglevel] [-t timeout] [-g graceperiod] [-h hashsize] [-l k2utimeout]
ОПИСАНИЕ
Lockd обрабатывает блокирующие запросы, посланные либо локально ядром, либо с удаления другим блокирующим процессом. Lockd -процесс пересылает блокирующие запросы, касающиеся удаленных данных, серверному процессу, используя для этого пакет RPC/XDR. Затем lockd обращается к услугам монитора состояния statd (8). Ответ на запрос не будет послан ядру до тех пор, пока не будет получен ответ от монитора состояния и серверного блокирующего процесса. Если либо монитор, либо серверный процесс не доступны, ответ на блокирующий запрос, касающийся удаленных данных, откладывается до освобождения всех процессов.
По возвращении сервер делает паузу (grace period), ожидая от всех клиентских lockd-процессов запуска подтверждающих запросов. Lockd-процессы, с другой стороны, извещаются монитором statd о возобновлении сервера и немедленно перевыставляют ранее выданные блокирующие запросы. Если lockd-процессу не удается сохранить ранее выставленную блокировку на серверном конце, он посылает вызвавшему его процессу сигнал SIGUSR2.
Команду lockd следует запустить как можно раньше, еще при переходе из однопользовательского режима в многопользовательский, чтобы не дать возможности другим процессам воспользоваться стандартной блокировкой, принятой в System V. Если в стандартном системном коде захвата записей имеются активные или приостановленные блокировки, lockd пытается передать их процессу пользовательского уровня. Это делается для того, чтобы блокировки активных процессов не разрушались при запуске программ администратора защиты.
Опции:
-t timeout lockd использует значение timeout (таймаут; в секундах) вместо соответствующего значения по умолчанию (5 секунд) в качестве величины интервала ретрансмиссии блокирующего запроса удаленному серверу. -d debuglevel lockd имеет расширенные внутренние возможности в области формирования отчетов. Уровень 2 соответствует сигнализированию о существенных событиях. Уровень 4 сообщает о внутреннем состоянии и совокупном трафике. -g graceperiod lockd использует значение graceperiod (в секундах) вместо соответствующего значения по умолчанию (45 секунд). -h hashsize lockd использует значение hashsize (размер хеш-таблицы; в ячейках) вместо соответствующего значения по умолчанию (29). -l k2utimeout lockd использует значение k2utimeout (в секундах) в качестве интервала ретрансмиссии запросов ядра, обращенных к администратору защиты, вместо соответствующего значения по умолчанию (2 секунды). Это значение является величиной таймаута, используемого для локальных блокирующих запросов.
СМ. ТАКЖЕ
, lockf(2), ,
НАЗВАНИЕ
lockf - блокировка сегментов файла
СИНТАКСИС
#include <unistd.h>
int lockf (fildes, function, size) long size; int fildes, function;
ОПИСАНИЕ
Функция lockf позволяет блокировать отдельные сегменты файла. Учитывать ли блокировку при записи, определяется режимом доступа к файлу [см. ]. Если другие процессы попытаются блокировать уже заблокированный фрагмент, они либо получат в ответ код ошибки, либо будут ждать освобождения ресурса. При завершении процесса все блокировки, установленные им, удаляются. Более подробная информация о блокировке приведена в .
Аргумент fildes - это дескриптор открытого файла. Чтобы функция lockf завершилась успешно, файл должен быть открыт с правом записи (O_WRONLY или O_RDWR).
Аргумент function - это значение, задающее вполняемые действия. Допустимые значения определены во включаемом файле <unistd.h>:
#define F_ULOCK 0 /* Разблокировать ранее блокированный сегмент */ #define F_LOCK 1 /* Заблокировать сегмент */ #define F_TLOCK 2 /* Проверить и заблокировать сегмент */ #define F_TEST 3 /* Проверить сегмент */
Другие значения function зарезервированы для будущих расширений и приводят к ошибке, если не реализованы.
Значение F_TEST используется для определения того, не блокирован ли соответствующий сегмент файла каким-нибудь другим процессом. F_LOCK и F_TLOCK блокируют указанный сегмент, если это возможно. F_ULOCK разблокирует ранее блокированный сегмент.
Аргумент size задает количество последовательных байт файла, которые должны быть заблокированы или разблокированы. Началом сегмента является текущая позиция в файле; сегмент распространяется вперед или назад по файлу, в зависимости от положительного или отрицательного значения size (при распространении назад текущая позиция не включается в блокируемую или разблокируемую область). Если значение size равно 0, блокируется (или разблокируется) сегмент от текущей позиции до конца файла (текущего и любого будущего). Блокируемый сегмент не обязан существовать в файле, допустима блокировка областей за концом файла.
Сегменты, блокируемые посредством F_LOCK и F_TLOCK, могут полностью или частично пересекаться с сегментами, ранее блокированными тем же процессом. При обнаружении такого пересечения, а также при обнаружении смежных сегментов, создается один блокируемый сегмент, охватывающий все смежные байты. Если при блокировании создается новый блокируемый сегмент, он заносится в таблицу блокировок; при нехватке места в этой таблице обращение к lockf завершается неудачей и блокировка не устанавливается.
Запросы F_LOCK и F_TLOCK отличаются только действиями, которые производятся в случае, если блокировку осуществить невозможно. F_LOCK приводит к ожиданию освобождения ресурса. Запрос F_TLOCK, если сегмент уже блокирован другим процессом, приводит к возврату значения -1 и присваивания переменной errno значения EACCES.
Запрос F_ULOCK может полностью или частично разблокировать один или более сегментов, заблокированных вызывающим процессом. Если сегмент разблокируется не полностью, остаток остается блокированным. Разблокирование середины сегмента требует дополнительного элемента в таблице блокировок. При нехватке места в этой таблице происходит неудача, переменной errno присваивается значение EDEADLK и разблокировка не производится.
Если процесс, захвативший ресурс, ждет освобождения другого ресурса другим процессом, может возникнуть тупик, поэтому lockf и fcntl контролируют возможность образования тупика, прежде чем начать ожидание ресурса. Если обнаруживается, что ожидание ресурса вызовет тупик, выдается ошибка.
Ожидание ресурса может быть прервано произвольным сигналом. Для применений, в которых требуется временной контроль, рекомендуется пользоваться системным вызовом .
Функция lockf завершается неудачей, если выполнено хотя бы одно из следующих условий:
ИМЯ
locking - блoкиpyeт или paзблoкиpyeт yчacтoк фaйлa для чтeния или зaпиcи
СИНТАКСИС
#include <sys/types.h>
#include <sys/locking.h>
int locking (fildes, mode, size) int fildes, mode; long size;
ОПИСАНИЕ
locking пoзвoляeт пpoцeccy yпpaвлять зaдaнными бaйтaми в фaйлe. Дpyгиe пpoцeccы, жeлaющиe читaть или пиcaть yчacтoк фaйлa, coдepжaщий блoкиpoвaнныe бaйты, бyдyт ждaть дo тex пop, пoкa yчacтoк нe paзблoкиpyeтcя в зaвиcимocти oт peжимa ycтaнoвлeннoй блoкиpoвки.
Чтoбы мoжнo былo ycтaнoвить блoкиpoвкy oт чтeния, фaйл дoлжeн быть oткpыт для чтeния или чтeния/зaпиcи. Чтoбы мoжнo былo ycтaнoвить блoкиpoвкy oт зaпиcи, фaйл дoлжeн быть oткpыт для зaпиcи или чтeния/зaпиcи. Пpи нeвыпoлнeнии любoгo из этиx ycлoвий блoкиpoвкa нe cтaвитcя и фoмиpyeтcя oшибкa EINVAL.
Пpoцecc, жeлaющий читaть или пиcaть yчacтoк, paнee блoкиpoвaнный oт чтeния или зaпиcи дpyгим пpoцeccoм (иcпoльзyя peжим LK_LOCK или LK_NBLCK), бyдeт ждaть ocвoбoждeния yчacткa блoкиpoвaвшим eгo пpoцeccoм.
Пpoцecc, жeлaющий пиcaть yчacтoк фaйлa, чтo был зaблoкиpoвaн oт зaпиcи дpyгим пpoцeccoм (иcпoльзyя peжим LK_RLCK или LK_NBRLCK), бyдeт ждaть ocвoбoждeния yчacткa блoкиpoвaвшим eгo пpoцeccoм, a пpoцecc, жeлaющий читaть этoт yчacтoк, cмoжeт выпoлнить чтeниe.
Пpoцecc, жeлaющий блoкиpoвaть yчacтoк, coдepжимoe кoтopoгo yжe блoкиpoвaнo дpyгим пpoцeccoм, бyдeт ждaть, ecли peжим блoкиpoвки LK_LOCK или LK_RLCK, и бyдeт вoзвpaщaть yпpaвлeниe c oшибкoй EACCES, ecли peжим блoкиpoвки LK_NBLCK или LK_NBRLCK.
fildes являeтcя нoмepoм oткpытoгo фaйлa, вoзвpaщaeмым вызoвaми creat, open, dup или pipe.
mode yкaзывaeт peжим блoкиpoвки yчacткa. Cимвoличecкиe и чиcлoвыe знaчeния этoгo apгyмeнтa тaкoвы:
НАЗВАНИЕ
log - интерфейс для регистрации ошибок и трассировки событий псевдоустройств
ОПИСАНИЕ
Драйвер log обеспечивает интерфейс для процессов регистрации ошибок и трассировки событий псевдоустройств [см. , ]. Log предоставляет два отдельных интерфейса: интерфейс вызова функций из ядра, через который драйверы и модули псевдоустройств передают сообщения для регистрации, а также набор команд для системного вызова для взаимодействия на прикладном уровне с процессами регистрации и трассировки, а также для процессов, которым требуется регистрировать свои собственные сообщения.
Вызов функций из ядра
Сообщения передаются для регистрации путем вызова из ядра функции strlog:
#include <sys/stropts.h> #include <sys/strlog.h> #include <sys/log.h>
strlog (mid, sid, level, flags, fmt, arg1, ...) short mid, sid; char level; unsigned short flags; char *fmt; unsigned int arg1;
Аргумент mid - это идентификатор модуля для модуля или драйвера, посылающего сообщение для регистрации. Аргумент sid задает дополнительный внутренний числовой идентификатор, обычно используемый для идентификации младшего устройства в драйвере. Аргумент level - это уровень приоритета трассировки, дающий возможность избирательной трассировки (пропуска сообщений с низким приоритетом). Аргумент flags представляет собой комбинацию следующих значений:
SL_ERROR Сообщение зарегистрировать, как ошибку. SL_TRACE Трассировочное сообщение. SL_FATAL Фатальная ошибка. SL_NOTIFY Послать сообщение системному администратору через .
Аргумент fmt - это цепочка символов, задающая формат в стиле , но спецификаторы %s, %e, %E, %g и %G не обрабатываются. Количество дополнительных числовых аргументов (arg1, ...) ограничено величиной NLOGARGS (в настоящий момент оно равно 3).
Интерфейс пользователя
Доступ к интерфейсу log обеспечивается путем открытия устройства /dev/log через драйвер . Каждое открытие устройства /dev/log образует отдельный поток к драйверу log. Чтобы получать сообщения от драйвера log, процесс должен оповестить драйвер с помощью команды I_STR системного вызова о своем желании обрабатывать сообщения об ошибках или трассировочные сообщения, указав в качестве третьего аргумента для системного вызова ioctl адрес структуры типа struct strioctl.
НАЗВАНИЕ
login - вход в систему
СИНТАКСИС
login [имя [аргумент_окружения ...]]
ОПИСАНИЕ
Команда login используется в начале каждого сеанса работы за терминалом и дает возможность пользователю идентифицировать себя для системы. Команду login можно вызвать явно или ее может выдать система при первом установлении связи. Эта команда также выдается системой в тот момент, когда предыдущий пользователь закончил сеанс работы. Информация о том, как начать работу, имеется в начале этого Справочника (см. КАК НАЧАТЯ?).
Если команда login вызывается явно, она должна заместить исходный интерпретатор команд. Данное действие выполняется после ввода в первоначальном shell'е строки
exec login
Команда login запрашивает входное имя (если оно не задано как аргумент) и пароль (если он есть). Во время ввода пароля эхоотображение выключено (там, где это возможно), поэтому в протокол сеанса пароль не попадет.
Если в течение определенного промежутка времени (например, одной минуты) пользователь не завершил вход в систему, то скорее всего его "молча" отсоединят.
После успешного входа в систему модифицируются учетные файлы, выполняется процедура /etc/profile и выдается дополнительное сообщение из файла /etc/motd, если файл не пуст. Устанавливаются идентификатор пользователя, идентификатор группы, рабочий каталог и интерпретатор команд [обычно это ]. Если в рабочем каталоге существует файл .profile, то он выполняется. Все эти спецификации находятся в строке файла /etc/passwd, описывающей данного пользователя. Имя интерпретатора команд состоит из символа -, за которым идет последний компонент маршрутного имени интерпретатора (например, -sh). Если это поле в файле паролей пусто, то используется имя стандартного интерпретатора команд /bin/sh. Если в этом поле стоит символ *, то каталог, указанный в предыдущем поле, становится корневым - стартовой точкой при поиске файлов по маршрутным именам, начинающимся с символа /. Затем в новой иерархии файлов, которая должна содержать свои /bin/login и /etc/passwd, команда login выполняется повторно.
Стандартное окружение инициализируется следующим образом:
НАЗВАНИЕ
logname - получение входного имени
СИНТАКСИС
logname
ОПИСАНИЕ
Команда logname выдает значение переменной окружения $LOGNAME, которая устанавливается при входе пользовате- ля в систему.
ФАЙЛЫ
/etc/profile
СМ. ТАКЖЕ
, . , в Справочнике программиста.
НАЗВАНИЕ
logname - опрос входного имени пользователя
СИНТАКСИС
char *logname ( )
ОПИСАНИЕ
Функция logname возвращает указатель на входное имя, ограниченное нулевым байтом; она выделяет из пользовательского окружения значение переменной LOGNAME.
Функция logname входит в библиотеку /lib/libPW.a.
ФАЙЛЫ
/etc/profile
СМ. ТАКЖЕ
, , . , в Справочнике пользователя.
ОГРАНИЧЕНИЯ
Значение, возвращаемое функцией logname, указывает на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова.
Данный метод получения входного имени в будущем может перестать работать.
НАЗВАНИЕ
lorder - поиск зависимостей между об ектными файлами
СИНТАКСИС
lorder файл ...
ОПИСАНИЕ
Аргументами являются один или более об ектных или библиотечных архивных файлов [см. ]. Результатом выполнения команды, поступающим на стандартный вывод, является список пар имен об ектных файлов или элементов архива; первый файл пары ссылается на внешние имена, определенные во втором файле. Этот список можно обработать командой , чтобы найти способ упорядочения библиотеки, позволяющий отредактировать связи за один проход. Заметим, что редактор связей может делать и несколько проходов по архиву, имеющему мобильный формат [см. ], и не требует, чтобы при построении архива обязательно применялась команда . Однако применение команды может сделать доступ к архиву во время редактирования связей несколько более эффективным.
В следующем примере из существующих .о-файлов строится новая библиотека
ar -cr library `lorder *.o | tsort`
ФАЙЛЫ
TMPDIR/*symref Временные файлы. TMPDIR/*symdef Временные файлы.
Обычно каталог TMPDIR - это /usr/tmp, однако данное соглашение можно изменить, присвоив переменной окружения TMPDIR другое значение [см. tempnam( ) в ].
СМ. ТАКЖЕ
, , .
в Справочнике программиста.
ОГРАНИЧЕНИЯ
Команда lorder способна обрабатывать об ектные и архивные файлы с любыми расширениями, но при условии, что исходных файлов несколько. Если исходный файл один, он должен иметь расширение .o.
НАЗВАНИЕ
lp - выдача запроса на печать
СИНТАКСИС
lp [-c] [-d адрес] [-m] [-n количество] [-o опция] [-s] [-t заголовок] [-w] файл ...
ОПИСАНИЕ
Команда lp вызывает печать файлов и связанной с ними информации (все вместе называется запросом) на строчном печатающем устройстве (принтере). Если имена файлов опущены, печатается стандартный файл ввода. Файл с именем "-" означает стандартный ввод и может быть задан в командной строке наряду с другими файлами. Файлы печатаются в том порядке, в котором они перечислены.
Команда lp связывает с каждым запросом уникальный идентификатор, который выдается на стандартный вывод. Этот идентификатор может быть в дальнейшем использован для аннулирования [см. ] или определения статуса [см. ] запроса.
Команда lp имеет следующие опции, которые могут записываться в командной строке в любом порядке вперемежку с именами файлов:
-c Копировать файлы сразу после ввода команды. Обычно на печатаемые файлы устанавливаются ссылки. Если опция -c не задана, пользователь должен быть внимателен: не следует удалять файлы прежде, чем запрос на печать будет полностью удовлетворен. Следует также отметить, что при отсутствии опции -c все изменения в файлах, сделанные после выдачи запроса, но до вывода на печать, будут отражены в напечатанном экземпляре.
-d адрес
Параметр адрес задает принтер или класс принтеров, на которые следует осуществлять вывод. Если адрес задает принтер, то печать осуществляется на конкретном принтере. Если адрес задает класс принтеров, то печать осуществляется на ближайшем доступном принтере указанного класса. При некоторых условиях (например, недоступность принтера, ограничение на длину файла) запрос может быть не воспринят (см. и ). По умолчанию значение параметра адрес определяется по переменной окружения LPDEST (если она установлена); в противном случае используется системное значение по умолчанию (если оно существует). Адреса устройств зависят от генерации системы [см. ].
-m Послать почтовое сообщение (см. ) после завершения печати файлов. По умолчанию при нормальном завершении запроса на печать сообщений не выдается.
-n количество
НАЗВАНИЕ
lp, lp0, lp1, lp2 - интерфейсы к принтерам
ОПИСАНИЕ
Файлы lp0, lp1 и lp2 обеспечивают доступ к параллельным портам компьютера. Файлы lp0 и lp2 обеспечивают доступ к параллельным портам 1 и 2 соответственно. Файл lp1 обеспечивает доступ к к параллельному порту монохромного адаптера.
В данной системе могут использоваться только один из lp0 и lp1. Для получения доступа к двум параллельным принтерам системы используйте либо lp0, либо lp1 и lp2.
ФАЙЛЫ
/dev/lp0 /dev/lp1 /dev/lp2
СМ. ТАКЖЕ
lp(1), lpadmin(8), lpsched(8), lpinit(8)
ПРИМЕЧАНИЯ
Стандартные порты печати lp0, lp1 и lp2 инициализируют принтер при первом открытии этих файлов после загрузки системы.
Не все компьютеры имеют разъем альтернативного параллельного порта.
НАЗВАНИЕ
lpadmin - конфигурирование системы накопления вывода на строчные принтеры
СИНТАКСИС
/usr/lib/lpadmin [-pпринтер [[-cкласс] [-eпринтер] [-h] [-iинтерфейс] [-l] [-mобразец] [-rкласс] [-vустройство]]] [-xадресат] [-d[адресат]]
ОПИСАНИЕ
Команда lpadmin конфигурирует систему накопления вывода на строчные принтеры и служит для описания принтеров, классов принтеров и устройств. Она применяется для добавления и исключения адресатов, изменения состава классов, назначения принтерам других устройств, замены интерфейсных программ печати и изменения подразумеваемых системных назначений. Команду lpadmin нельзя выдавать при работающем планировщике строчных принтеров lpshed(1M), кроме двух указанных ниже случаев.
Корректным считается запуск команды lpadmin, в котором задана только одна из опций -p, -x, или -d.
-pпринтер
Задается принтер, к которому относятся перечисленные ниже опции (-c и т.д.). Если принтер не существует, то он создается.
-xадресат
Адресат исключается из системы принтеров. Если адресат - принтер, а также единственный представитель класса, то класс будет уничтожен. В сочетании с этой опцией никакие другие недопустимы.
-d[адресат]
Указанный (существующий) адресат становится подразумеваемым. Если адресат не указан, то в системе не остается подразумеваемого адресата. Команда с этой опцией может быть запущена при работающем планировщике lpshed(1M). В сочетании с этой опцией никакие другие недопустимы.
Следующие опции задаются только вместе с опцией -p и могут быть указаны в произвольном порядке. Для краткости имя принтера, заданного в опции -p, будет обозначаться буквой P.
-cкласс
Вводит принтер P в указанный класс. Если класса еще не существует, то он создается.
-eпринтер
Сопоставляет принтеру P ту интерфейсную программу, которая соответствует указанному (и уже существующему) принтеру.
-h Означает, что принтер P аппаратно подсоединяется к системе. При добавлении нового принтера используют либо эту опцию, либо -l.
-iинтерфейс
Сопоставляет принтеру P новую интерфейсную программу. Интерфейс - маршрутное имя этой программы.
-l Означает, что устройство, связанное с P, есть терминал, с которого можно войти в систему. Планировщик lpshed сразу после своего запуска блокирует такие принтеры-терминалы. Прежде чем разблокировать P, следует выполнить команду lpadmin с опцией -l.
-mобразец
НАЗВАНИЕ
lpadmin - устанавливает конфигурацию системы спулинга печати.
СИНТАКСИС
/usr/lib/lpadmin -p printer [options...] /usr/lib/lpadmin -x dest /usr/lib/lpadmin -d[dest]
ОПИСАНИЕ
lpadmin конфигурирует систему спулинга печати, описывая принтеры, классы и устройства. Она используется для добавления и удаления назначений, изменения членского состава классов, изменения устройств, связанных с принтерами, и интерфейсных программ печати, а также для изменения назначения, устанавливаемого в системе по умолчанию. Администратор системы может использовать lpadmin также для добавления к системе новых назначений печати. lpadmin нельзя использовать при работающем планировщике печати , за исключением указанных ниже случаев.
Для правильного запуска lpadmin нужно использовать только одну из опций -p, -d или -x.
-d[dest] Задает новое системное назначение dest, используемое в системе по умолчанию. Если dest не задано, тогда системное назначение, используемое по умолчанию, отсутствует. Эта опция может использоваться при работающем . Совместное использование с другими опциями не разрешается. -xdest Удаляет назначение dest из системы печати. Если dest принтер, единственный в классе, тогда удаляется и этот класс. Совместное использование с другими опциями не разрешается. -pprinter Называет имя printer, к которому относятся приведенные ниже опции. Если printer не существует, то он будет создан. Совместное использование с другими опциями не разрешается.
Следующие опции используется только совместно с опцией -p и могут набираться в любом порядке. Для простоты принтер будет называться ниже p.
-cclass Вводит принтер p в заданный класс. Если класс class не существует, то он будет создан. -eprinter Копирует существующую интерфейсную программу, соответствующую устройству printer, в качестве новой интерфейсной программы для p.
Указывает, что устройство, связанное с p, присоединено. Задание этой опции подразумевается при подключении нового принтера, если не задана опция -l.
Устанавливает новую интерфейсную программу для p. Interface - полное имя этой программы.
НАЗВАНИЕ
lpinit - подключает, переустанавливает конфигурацию и поддерживает принтеры.
СИНТАКСИС
/etc/lpinit
ОПИСАНИЕ
lpinit - это программа-оболочка для конфигурирования и подключения новых принтеров к системе, а также для поддержания и переустановки конфигурации существующих принтеров. Она должна вцыполняться только администратором системы.
lpinit задает ряд вопросов, на которые высвечивается ответ по умолчанию. Вы можете нажать RETURN, если принимаете значение по умолчанию, или ввести новое значение.
lpinit высвечивает меню со следующими опциями:
1) Add a new printer 2) Remove a printer 3) Reconfigure an existing printer 4) Assign a system default printer 5) Print lp status information
При переустановке конфигурации существующего принтера высвечиваются следующие опции:
1) Insert a printer into class 2) Remove a printer from a class 3) Install a new interface program for a printer 4) Associate a new device with a printer
Информация, запрашиваемая у администратора системы, включает:
устройство принтера (например, /dev/lp0). Режим обработки символов принтера. (Значение по умолчанию не интерпретируется. Дополнительную информацию смотрите в "Описании".) Имя принтера (по умолчанию - printer). Полное имя интерфейсной программы (поддерживается несколько версий программ). Имя класса, в который включается или из которого удаляется принтер. является ли подключаемый или переустанавливаемый принтер параллельным, последовательным или удаленным принтером. требует ли подключаемый или переустанавливаемый принтер специальной обработки символов возврата каретки и перевода на новую строку.
Имя принтера может представлять собой любую комбинацию вплоть до 14 буквенно-численных символов и символа подчеркивания. Интерфейсная программа печати может быть программой-оболочкой, C-программой или любой другой выполняемой программой, а также модификацией версии /usr/spool/lp/model/dumb. (Смотрите раздел "Интерфейсные программы печати" на странице документации .)
ИМЯ
lpr - Ставит файлы в очередь на построчно-печатающее устройс тво для вывода на печать.
СИНТАКСИС
lpr[option...][name...]
ОПИСАНИЕ
Команда lpr вызывает поименованые файлы с целью постановки в очередь для вывода на печать на построчно печатающем устройстве. Если никакие имена не указаны, то вместо файлов используется стандартный ввод; эта команда lpr может быть применена в качестве фильтра (программы, получающей все данные из входного потока и выводящей все данные во входной поток).
Могут задаваться следующие опции (каждый отдельный аргумент и аргументы в некоторой последовательности), включающие до нескольких аргументов имен файлов:
В содержимом файла /etc/default/lpd устанавливается переменная BANNERS, значение которой является числом печатаемых страниц, выводящимся как заголовок, идентифицирующий каждый вывод на печать. Как правило, это значение устанавливается равным либо 1, либо 2.
ФАЙЛЫ
/etc/passwd Идентификация пользователя и учетные данные /usr/lib/lpd Демон построчно-печатающего устройства /usr/spool/lpd/* Буферная область данных /etc/default/lpd Содержит установку по умолчанию перемен- ной BANNERS /etc/lpopen На некоторых системах - установка режимов на последовательную связь
СМ. ТАКЖЕ
,
ЗАМЕЧАНИЯ
Файл, когда-то уже поставленный в очередь на печать, не должен изменяться или уточняться до тех пор, пока печать не завершится. Если желательно изменить содержимое файла или непосредственно уничтожить файл, пользуйтесь оцией -c для ускорения действия команды lpr, делая свою собственную копию файла.
ИМЯ
lprint - Производит вывод на печать на печатающем устройстве, подключенном к терминалу пользователя.
СИНТАКСИС
lprint[-]file
ОПИСАНИЕ
Команда lprint вводит имя файла для выполнения печати или - чтения с клавиатуры. Если терминал имеет ограниченные возможности печати, то файл будет печататься на печатающем устройстве, подключенном к порту терминала для печатающих устройств.
Эта команда использует файл /etc/termcap.
ОПЦИИ
ФАЙЛЫ
/etc/termcap
ЗАМЕЧАНИЯ
Единственными терминалами, поддерживаемыми в настоящее время с помощью записей в файле /etc/termcap, являются DT-100 и DT-1 фирмы Tandy и HP-92 фирмы Hewlett-Packard.
Для расширения возможностей подключенного печатающего устройства в файл termcap для другого терминала добавляются записи для PN (начала печати) и PS (конца печати) с управляющими символами или символами вывода для вашего терминала.
Коммуникационные параметры терминала (такие как скорость передачи и контроль по четности) должны быть установлены на терминале самим пользователем.
СМ. ТАКЖЕ
"Using Printers" ("Применение печатающих устройств") в руководстве системного администратора в системе XENIX.
НАЗВАНИЕ
lpsched, lpshut, lpmove - запуск/останов планировщика строчных принтеров и переадресация запросов
СИНТАКСИС
/usr/lib/lpsched /usr/lib/lpshut /usr/lib/lpmove запросы адресат /usr/lib/lpmove адресат1 адресат2
ОПИСАНИЕ
Команда lpsched распределяет запросы на печать, принятые командой .
Команда lpshut прекращает работу планировщика lpsched и останавливает активные принтеры. После повторного запуска планировщика прерванные выдачи будут напечатаны полностью.
Команда lpmove пересылает запросы из очереди, образовавшейся в результате выполнения команд , указанному адресату. Эту команду можно выполнять только при неработающем планировщике lpsched.
При использовании первой формы записи команды lpmove перечисленные запросы направляются указанным адресатам. Запросы - это идентификаторы, сообщаемые командой . При использовании второй формы записи все запросы к адресату1 переправляются адресату2. После такой переадресации команда будет отвергать запросы к принтеру адресат1.
Отметим, что команда lpmove не проверяет, доступен ли адресат, которому переправляются запросы [см. ].
ФАЙЛЫ
/usr/spool/lp/*
СМ. ТАКЖЕ
, .
, , , в Справочнике пользователя.
НАЗВАНИЕ
lpsched, lpshut, lpmove - запускает/останавливает планировщик печати и переадресовывает печать.
СИНТАКСИС
/usr/lib/lpsched /usr/lib/lpshut /usr/lib/lpmove requests destinations /usr/lib/lpmove dest1 dest2
ОПИСАНИЕ
lpsched управляет запросами, полученными для печати на принтерах.
lpshut останавливает работу планировщика печати. Все принтеры, печатающие в момент вызова lpshut, останавливаются. Задания, выполнявшиеся в момент остановки принтера, будут перепечатаны заново, когда будет повторно запущен lpsched. Все команды принтера будут выполнять свои функции, даже когда lpsched не работает.
lpmove переадресовывает запросы, поставленные в очередь , между принтерами. Эта команда может быть запущена только при отключенном lpsched. Первая форма этой команды переназначает запросы requests на принтеры destinations. При этом requests - это идентификаторы запросов, в том виде, в каком они были возвращены программой . Вторая форма этой команды переадресует все запросы, назначенные для принтера dest1, на принтер dest2. В качестве побочного эффекта будет отвергать все запросы для принтера dest1.
Обратите внимание, что lpmove никогда не проверяет статус нового назначения при переадресации запросов (см. ).
ФАЙЛЫ
/usr/spool/lp/*
СМ. ТАКЖЕ
, , , , ,
НАЗВАНИЕ
lpstat - вывод информации о статусе принтеров
СИНТАКСИС
lpstat [-a[список]] [-c[список]] [-d] [-o[список]] [-p[список]] [-r] [- [-u[список]] [-v[список]]
ОПИСАНИЕ
Команда lpstat печатает информацию о текущем состоянии имеющихся в системе принтеров.
Если опции не заданы, то lpstat печатает состояние всех запросов на печать, выданных пользователями посредством команды . Любой аргумент команды, не являющийся опцией, считается идентификатором (присвоенным командой lp). Команда lpstat печатает состояние этих запросов. Опции могут появляться в любом порядке, повторяться и чередоваться с другими аргументами. За некоторыми из перечисленных ниже флагов может следовать необязательный список в одной из двух форм: либо элементы списка разделены запятыми, либо список заключен в кавычки, а его элементы разделены запятыми и/или одним или несколькими пробелами. Пример:
-u"пользователь1, пользователь2"
При отсутствии списка после флага выдается вся информация, относящаяся к данному флагу. Пример: команда
lpstat -o
вызовет печать статуса всех запросов на вывод.
-a[список]
Сообщить статус доступности устройств для запроса (по отношению к команде lp). Список - смешанный список имен принтеров и классов принтеров.
-c[список]
Сообщить имена классов из данного списка и их представителей. Список - список имен классов.
-d Сообщить имя устройства, назначенного команде lp по умолчанию.
-o[список]
Сообщить статус запросов на вывод. Список - смешанный список имен принтеров, классов и идентификаторов запросов.
-p[список]
Сообщить статус принтеров. Список - список имен принтеров.
-r Сообщить статус планировщика запросов lpsched.
-s Выдать сводную информацию, включая имя подразумеваемого устройства и список принтеров и прикрепленных к ним устройств.
-t Сообщить всю информацию о статусе.
-u[список]
Сообщить статус запросов на вывод, выданных пользователями. Список - список входных имен пользователей.
-v[список]
Сообщить имена принтеров и составные имена прикрепленных к ним устройств. Список - список имен принтеров.
ФАЙЛЫ
/usr/spool/lp/*
СМ. ТАКЖЕ
, , , .
НАЗВАНИЕ
lpx - универсальный форматер страниц
СИНТАКСИС
/usr/lib/lpx [-t] [-n имя] [-c название_главы] [-l длина_страницы] [файл ...]
ОПИСАНИЕ
Команда lpx разбивает файл на страницы и добавляет к каждой странице заголовок.
Опции команды:
-t Не выводить заголовок.
-n имя
Печатать в заголовке имя вместо имени печатаемого файла.
-c название_главы
Ввести в заголовок название_главы. Имя печатается в центре заголовка, а название_главы и номер_страницы - справа (на нечетных страницах) или слева (на четных страницах)
-l Изменить длину страницы (по умолчанию - 66 строк).
Команда lpx используется планировщиком принтеров для форматирования печатаемых файлов.
Команду lbp.lpx можно использовать для генерации специальных команд форматирования для лазерного принтера [см. ].
ФАЙЛЫ
/usr/lib/lpx /usr/lib/lbp.lpx
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
Диагностические сообщения команды lpx не нуждаются в пояснениях.
НАЗВАНИЕ
ls - выдача информации о файлах или каталогах
СИНТАКСИС
ls [-R] [-a] [-d] [-C] [-x] [-m] [-l] [-n] [-o] [-g] [-r] [-t] [-u] [-c [-p] [-F] [-b] [-q] [-i] [-s] [-f] [имя ...]
ОПИСАНИЕ
Команда ls для каждого имени каталога распечатывает список входящих в этот каталог файлов; для файлов - повторяется имя файла и выводится дополнительная информация в соответствии с указанными флагами. По умолчанию имена файлов выводятся в алфавитном порядке. Если имена не заданы, выдается содержимое текущего каталога. Если заданы несколько аргументов, то они сортируются по алфавиту, однако сначала всегда идут файлы, а потом каталоги с их содержимым.
Существует три основных формата выдачи. По умолчанию выдается по одному файлу в строке; флаги -C и -x позволяют выдавать информацию в несколько колонок, а флаг -m задает свободный формат. Для определения формата вывода при указании флагов -C, -x и -m используется переменная окружения COLUMNS, значение которой равно количеству символов в выходной строке. Если эта переменная не установлена, используется база данных и значение переменной окружения TERM. Если эта информация недоступна, длина выходной строки берется равной 80.
Командой ls обрабатываются следующие флаги:
НАЗВАНИЕ
lsearch, lfind - последовательный поиск и обновление
СИНТАКСИС
#include <stdio.h>
#include <search.h>
char *lsearch ((char *) key, (char *) base, nelp, sizeof (*key), compar) unsigned *nelp; int (*compar) ( );
char *lfind ((char *) key, (char *) base, nelp, sizeof (*key), compar) unsigned *nelp; int (*compar) ( );
ОПИСАНИЕ
Функция lsearch предназначена для выполнения последовательного поиска в соответствии с алгоритмом, описанным в книге Д. Кнута: Искусство программирования для ЭВМ. Т. 3. Сортировка, поиск. - М.: Мир, 1978. Раздел 6.1, алгоритм S.
Функция lsearch возвращает указатель внутрь таблицы на искомые данные. Если данные не найдены, они добавляются в конец таблицы. Аргумент key указывает на объект данных, разыскиваемый в таблице (ключ поиска). Base указывает на первый элемент таблицы. Nelp - указатель на целое, содержащее текущее количество элементов в таблице. Это целое значение увеличивается на единицу, если в таблицу добавляются данные. Compar - функция сравнения, предоставляемая пользователем (например, функция strcmp). Функция сравнения вызывается с двумя аргументами - указателями на сравниваемые элементы. Она должна возвращать нулевое значение, если элементы равны, и значение, не равное нулю, в противном случае.
Функция lfind выполняет то же самое, что и функция lsearch, но не добавляет данные в таблицу при неудачном поиске, возвращая в этом случае пустой указатель NULL.
ПРИМЕЧАНИЯ
Указатели на ключ (key) и на первый элемент таблицы (base) должны иметь тип "указатель на элемент" и преобразовываться к типу "указатель на символ".
В сравнении, осуществляемом функцией compar, не обязательно должен участвовать каждый байт, поэтому элементы таблицы в дополнение к сравниваемым величинам могут содержать произвольные данные.
Хотя функция lsearch описывается как имеющая тип "указатель на символ", возвращаемое ею значение следует преобразовывать к типу "указатель на элемент".
ПРИМЕР
Приведем фрагмент программы, который считывает цепочки символов в количестве, меньшем TABSIZE, и длиной, меньшей ELSIZE, и помещает прочитанные цепочки в таблицу, исключая дубликаты.
НАЗВАНИЕ
lseek - передвижение указателя чтения/записи
СИНТАКСИС
long lseek (fildes, offset, whence) int fildes; long offset; int whence;
ОПИСАНИЕ
Аргумент fildes - это дескриптор файла, полученный после выполнения системных вызовов creat, open, dup или fcntl. Системный вызов lseek устанавливает указатель текущей позиции файла, ассоциированного с дескриптором fildes, следующим образом, в зависимости от значения аргумента whence:
При успешном завершении системного вызова lseek возвращается новое значение указателя текущей позиции (в байтах) относительно начала файла. Отметим, что если fildes является дескриптором файла на удаленном компьютере и значение offset отрицательно, вызов lseek возвращает значение указателя текущей позиции, даже если оно отрицательно.
Системный вызов lseek завершается неудачей и указатель текущей позиции не изменяется, если выполнено хотя бы одно из следующих условий:
[EBADF] Аргумент fildes не является корректным дескриптором открытого файла. [PIPE] Дескриптор файла fildes ассоциирован с каналом. [EINVAL и сигнал SIGSYS] Значение аргумента whence не равно 0, 1 или 2. [EINVAL] Дескриптор fildes не является дескриптором файла, расположенного на удаленном компьютере, и результирующее значение указателя текущей позиции отрицательно.
Некоторые устройства не поддерживают передвижение указателя текущей позиции. Для файлов, ассоциированных с такими устройствами, значение указателя не определено.
СМ. ТАКЖЕ
, , , .
ДИАГНОСТИКА
При успешном завершении результатом служит неотрицательное целое число - указатель текущей позиции в файле; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки
ИМЯ
lsvfs - список инсталлированных виртуальных файловых систем
СИНТАКСИС
lsvfs [vfsname ...]
ОПИСАНИЕ
Команда lsvfs выдает информацию о загруженных виртуальных модулях. Когда аргумент vfsname указан, lsvfs выдает информацию о указнном VFS-модуле. Иначе выдается информация о всех загруженных в данный момент моделях. Эта информация содержит:
Filesystem имя файловой системы. Index номер переключателя для файловой системы kernel, как используемый в типе параметра для Refs число упоминаний указанной VFS, к примеру число смонтирова- нных на текущий момент файловых систем этого типа. Flags Флаг бит (только ``static'' текущий по умолчанию).
СМ. ТАКЖЕ
, mount(8)
ИСТОРИЯ
Команда lsvfs появилась в FreeBSD 2.0.
НАЗВАНИЕ
setjmp, longjmp - нелокальная передача управления
СИНТАКСИС
#include <setjmp.h>
int setjmp (env) jmp_buf env;
void longjmp (env, val) jmp_buf env; int val;
ОПИСАНИЕ
Описываемые функции полезны при обработке ошибок и прерываний, случившихся на одном из нижних уровней программной системы.
Функция setjmp сохраняет текущее стековое окружение в массиве env (тип jmp_buf определен во включаемом файле <setjmp.h>) для последующего использования функцией longjmp. Результат функции setjmp равен 0.
Функция longjmp восстанавливает окружение, сохраненное при последнем вызове setjmp с соответствующим аргументом env. После завершения longjmp выполнение программы продолжается так, как будто соответствующий вызов setjmp только что вернул значение val. Отметим, что в промежутке между обращениями к setjmp и longjmp не должно быть возврата из функции, вызывавшей setjmp.
С помощью функции longjmp невозможно вернуть нулевое значение. Если при вызове longjmp аргумент val равен 0, setjmp все равно вернет 1. Тем самым всегда есть возможность отличить естественный возврат из функции setjmp от искусственного, ставшего результатом выполнения longjmp. Значения всех глобальных объектов в момент искусственного возврата из setjmp, естественно, те же, что и в момент вызова longjmp. Значения локальных объектов соответствуют экземпляру функции, вызвавшей setjmp.
ПРИМЕР
#include <setjmp.h>
jmp_buf env; int i=0; main () { void exit ();
if (setjmp (env) != 0) { (void) printf ( "Значение i при 2-ом возврате из setjmp: %d\n",i); exit (0); } (void) printf ( "Значение i при 1-ом возврате из setjmp: %d\n",i); i = 1; g(); /* Недостижимый фрагмент */ }
g() { longjmp (env, 1); /* Недостижимый фрагмент */ }
Результаты выполнения этой программы после компиляции с языка C будут следующими:
Значение i при 1-ом возврате из setjmp: 0 Значение i при 2-ом возврате из setjmp: 1
СМ. ТАКЖЕ
.
ПРЕДОСТЕРЕЖЕНИЯ
Если при обращении к функции longjmp передается аргумент env, не заполненный setjmp, или последний вызов setjmp был в функции, из которой уже произошел возврат, то Вам гарантируется абсолютный хаос.