Man pages на русском

         

CTIME(3C)


НАЗВАНИЕ

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, а во внешнюю переменную




char *tzname[2] = {"EST", "EDT"};

поместить названия временных шкал. Эти изменения осуществляет функция tzset; обычно она вызывается функцией asctime, но может быть вызвана пользователем и явно.

Следует иметь в виду, что для большинства реализаций системный профайл /etc/profile содержит присваивание переменной TZ [см. , timezone(4)].

СМ. ТАКЖЕ

, , , timezone(4), .

СЮРПРИЗЫ

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

ПРИМЕЧАНИЯ

Всемирным временем называют поясное время 0-го часового пояса, которое представляет из себя местное среднее солнечное время гринвичского меридиана; обозначается GMT (Greenwich Mean Time).

Московское время опережает всемирное на 3 часа.(Это так называемое декретное московское время - не путать с поясным!)

Поясное время Москвы, лежащей во 2-м часовом поясе, опережает всемирное на 2 часа.

Московское летнее время опережает всемирное на 4 часа.

Основная территория США покрывается 4-мя часовыми поясами, то есть 16-м, 17-м, 18-м, 19-м, носящими соответственно специальные названия: Pacific (Тихоокеанский), Mountain (Горный), Central (Центральный), Eastern (Восточный). В них действует соответствующее поясное (Standard) и во всех штатах основной территории, за исключением Аризоны, летнее (Daylight [Saving]) время (Time). Отсюда сокращенные названия: PST, MST, CST, EST, а также PDT, MDT, CDT, EDT.









DRAND48(3C)


НАЗВАНИЕ

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


Первым этапом вычисления возвращаемого значения для любой из функций drand48, erand48, lrand48, nrand48, mrand48 или jrand48 является генерация очередного 48 битного значения X[i]. Далее из него берутся старшие биты в количестве, определяемом типом требуемого данного, которые и преобразуются в возвращаемое значение.

Функции drand48, lrand48 и mrand48 сохраняют последнее сгенерированное 48-битное значение X[i] во внутреннем буфере - вот почему они должны быть инициализированы перед своим вызовом. Для функций же erand48, nrand48 и jrand48 вызывающая программа должна сама резервировать память под очередное значение X[i], передаваемое при вызове как аргумент. Эти функции инициализации не требуют; вызывающая программа должна просто поместить желаемое начальное значение X[i] в массив из трех 16-битных слов и передать тот как аргумент. Посредством использования различных аргументов функции erand48, nrand48 и jrand48 позволяют различным модулям большой программы генерировать несколько независимых потоков псевдослучайных чисел; другими словами, последовательность чисел в каждом потоке не зависит от того, как часто программа вызывалась для генерации чисел других потоков.

Инициализирующая функция srand48 устанавливает старшие 32 бита значения X[i] равными 32-м битам своего аргумента. Независимо от значения старших бит, младшие 16 бит X[i] устанавливаются равными 0x330E.

Инициализирующая функция seed48 устанавливает значение всех 48 бит X[i] по значению аргумента - массива из трех 16-битных слов. Предыдущее значение X[i] копируется в 48-битный внутренний буфер, используемый только функцией seed48. Возвращаемое функцией seed48 значение представляет собой указатель на этот буфер. Возвращаемый указатель в большинстве случаев игнорируется, однако он может оказаться полезным при перезапуске программы с данной точки в будущем. Для этого, используя указатель, следует извлечь и сохранить последнее значение X[i], которое затем, при перезапуске, употребить для повторной инициализации с помощью seed48.

Инициализирующая функция lcong48 дает пользователю возможность указать начальное значение X [i], значение коэффициента a и аддитивной константы c. В массиве, являющемся ее аргументом, элементы param [0-2] определяют X [i], элементы param [3-5] - коэффициент a и, наконец, param [6] - 16-битную константу c. После вызова lcong48 восстановить "стандартные" значения коэффициента a и константы c, описанные выше, можно путем вызова какой либо из функций srand48 или seed48.

ПРИМЕЧАНИЯ

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

long irand48 (m) unsigned short m;

long krand48 (xsubi, m) unsigned short xsubi [3], m;

Функции irand48 и krand48 возвращают неотрицательные целые числа типа long, равномерно распределенные в интервале [0, m-1].

СМ. ТАКЖЕ

.









FREXP(3C)


НАЗВАНИЕ

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.



M4(1)


НАЗВАНИЕ

m4 - макропроцессор

СИНТАКСИС

m4 [-e] [-s] [-Bцелое] [-Hцелое] [-Sцелое] [-Tцелое] [-Dимя[=значение] [-Uимя] [файл ...]

ОПИСАНИЕ

Макропроцессор m4 предназначен для макрогенерации на предварительном проходе в языках RATFOR, C и других. Все файлы-аргументы обрабатываются по очереди. Если файлы не указаны, или в качестве имени файла задан -, то читается стандартный ввод. Обработанный текст записывается на стандартный вывод.

Допустимы следующие опции:

-e Работать интерактивно. Прерывания игнорируются и вывод не буферизуется.

-s Разрешить вывод операторов #line для C-препроцессора.

-Bцелое Сменить размеры буфера повторного сканирования и буфера, в котором накапливаются аргументы. По умолчанию размер равен 4096.

-Hцелое Сменить размер хэш-таблицы имен с 199 по умолчанию. Размер должен быть простым числом.

-Sцелое Сменить размер стека вызовов со 100 элементов по умолчанию. Макрос занимает 3 ячейки в стеке вызовов; аргумент занимает одну ячейку.

-Tцелое Изменить размер буфера лексем с 512 байт по умолчанию.

Чтобы эти опции действовали, они должны располагаться перед всеми именами файлов и перед опциями -D и -U:

-Dимя[=значение] Эта опция определяет имя равным значению или пустой цепочке, если значение отсутствует.

-Uимя Делает имя неопределенным.

Макровызовы имеют следующий вид:

имя(арг1,арг2, ...аргn)

Левая скобка должна следовать непосредственно за именем макроса. Если за именем определенного макроса не следует (, то полагается, что макрос вызван без аргументов. Имя макроса может состоять из букв, цифр и символов подчеркивания, причем первым символом не может быть цифра.

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

`эта цепочка не интерпретируется'

Значение цепочки символов, заключенной в кавычки, равно самой этой цепочке без внешних кавычек.

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

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


define Второй аргумент становится значением макроса с именем, равным первому аргументу. Если в значение макроса входят пары символов $n, где n - цифра, то при вызове этого макроса они заменяются на n-ый аргумент. Нулевым аргументом является имя макроса; пропущенные аргументы заменяются на пустые цепочки; $# заменяется количеством аргументов; $* заменяется на список всех аргументов, разделенных запятыми; $@ заменяется тоже на список аргументов, но каждый аргумент заключен в кавычки, являющиеся текущими.

undefine Удаляет определения макросов, имена которых заданы в качестве аргументов.

defn Возвращает заключенные в кавычки определения своих аргументов. Это полезно для переименования макросов, особенно встроенных.

pushdef Действует аналогично define, но сохраняет все предыдущие определения.

popdef Удаляет текущие определения своих аргументов и восстанавливает предыдущие, если они есть.

ifdef Если первый аргумент определен, то значение будет равно второму аргументу, в противном случае третьему. Если третьего аргумента нет, то значе ние будет пустым. Слово unix заранее определено в версиях m4 для системы UNIX.

shift Возвращает все свои аргументы кроме первого, зак лючив их в кавычки и отделив друг от друга запя тыми.

changequote Первый и второй аргументы становятся новыми символами-кавычками вместо ` и '. Эти аргументы могут содержать до 5 символов. Changequote без аргументов возвращает первоначальные значения (то есть `').

changecom Изменяет левый и правый маркеры комментария, которые первоначально равны # и символу перевода строки. Если нет аргументов, то механизм комментариев полностью подавляется. Если задан один аргумент, то он становится левым маркером комментариев, а правым маркером становится перевод строки. Если заданы два аргумента, то они становятся левым и правым маркерами. Маркеры комментариев могут содержать до 5 символов.

divert M4 поддерживает 10 выходных потоков, под номерами 0-9. Окончательный результат получается конкатенацией всех этих потоков в порядке возрастания номеров; первоначально текущим потоком является нулевой. Макрос divert меняет выходной поток на поток с номером, заданным аргументом (в виде цепочки десятичных цифр). Вывод, направленный во все потоки кроме 0-9, теряется.

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

divnum Возвращает номер текущего выходного потока.

dnl Читает и удаляет символы до следующего символа перевода строки включительно.

ifelse Имеет 3 или более аргументов. Если первый аргумент совпадает как цепочка символов со вторым, то результатом будет третий аргумент. Если нет, то, если аргументов более чем 4, то процесс повторяется с аргументами под номером 4, 5, 6 и 7 (4-ый и 5-ый аргументы сравниваются и т.д.) Если же аргументов не более 4, то результатом будет 4-ый аргумент или пустая цепочка при его отсутствии.

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

decr Возвращает значение своего аргумента, уменьшенное на 1.

eval Вычисляет свой аргумент как арифметическое выражение, используя 32-битную арифметику. Допустимые операции включают +, -, *, /, %; побитные операции &, |, ^, и ~; операции отношения; скобки. Восьмеричные и шестнадцатеричные числа могут быть заданы как в языке C. Второй аргумент указывает систему счисления для результата; по умолчанию результат десятичный. Если задан третий аргумент, то он определяет минимальное число цифр в результате.

len Возвращает количество символов в своем аргументе.

index Возвращает позицию в первом аргументе, с которой начинается второй аргумент. Позиции нумеруются с 0. В случае неудачи поиска возвращается -1.

substr Возвращает подцепочку первого аргумента. Второй аргумент задает номер начального символа подцепочки (считая от 0), третий аргумент указывает длину. Если третий аргумент опущен, то подцепочка продолжается до конца первого аргумента. Если вторым и третьим аргументами задана подцепочка, выходящая за пределы данной цепочки, то результатом будет их пересечение.

translit Заменяет в первом аргументе символы, которые входят во второй аргумент, на символы, стоящие в третьем аргументе на тех же позициях. Не допустимы никакие сокращения.

include Возвращает содержимое файла с именем, заданным аргументом.

sinclude То же самое, что и include, за исключением того, что не будет никакой реакции, если файл недоступен.

syscmd Выполняет команду системы UNIX, заданную первым аргументом. Никакого значения не возвращается.

sysval Код завершения последнего вызова syscmd.

maketemp В подцепочку аргумента, имеющую вид XXXXX, вписывается идентификатор текущего процесса.

m4exit Вызывает немедленный выход из m4. Первый аргумент, если он есть, будет кодом завершения; подразумевается 0.

m4wrap Помещает свой первый аргумент в конец исходного текста, например:



m4wrap(`cleanup()')

Эффективен только один вызов m4wrap, из нескольких вызовов действие окажет только последний.

errprint Выдает свой аргумент в стандартный протокол.

dumpdef Выдает текущие имена и определения для указанных макросов, или для всех макросов, если нет аргументов.

traceon Если аргументы не заданы, включает трассировку всех макросов (в том числе и встроенных); иначе включает трассировку только указанных макросов.

traceoff Выключает трассировку глобально или для указанных макросов специально. Если трассировка некоторого макроса была включена вызовом traceon с аргументами, то и выключить его трассировку можно только вызовом traceoff с именем этого макроса в качестве аргумента, а не глобальным traceoff без аргументов.

СМ. ТАКЖЕ

, .









M68K(1)


НАЗВАНИЕ

m68k

СИНТАКСИС

m68k

ОПИСАНИЕ

Код завершения команды m68k равен 0 (истина), если Вы работаете на компьютере семейства Motorola M68000; в противном случае код завершения отличен от нуля.

СМ. ТАКЖЕ

.



MACHID(1)


НАЗВАНИЕ

pdp11, u3b, vax, m68k - информация о типе процессора.

СИНТАКСИС

pdp11 u3b vax m68k

ОПИСАНИЕ

Код завершения этих команд равен 0 (истина), если Вы работаете на процессоре, заданном именем команды. В противном случае код завершения отличен от нуля.

pdp11 PDP-11/45 или PDP-11/70 u3b 3B20S vax VAX-11/750 или VAX-11/780 m68k Motorola M68000

Эти команды часто используются внутри make-файлов [см. ] и shell-процедур для увеличения мобильности.

СМ. ТАКЖЕ

, , , .



MACHINE(HW)


НАЗВАНИЕ

Machine - описание главной машины

ОПИСАНИЕ

На этой странице перечисляются внутренние характеристики персональных компьютеров, использующих процессоры семейства Intel 8086 и соответственные аппаратные средства. Эта информация предназначается для разработчиков программных средств, которые хотели бы перенести объектные или выполняемые файлы с другой машины на свой персональный компьютер, а не подготавливать файлы к исполнению на этом компьютере.

Центральный процессор Intel 8086, 8088, 80186, 80286, 80386 Размер блоков на диске 1024 байта Схема управления памятью Несегментированная (8086,8088,80186)

Сегментированная (80826)

Сегментированная и страничная (80386) Разделение данных и команд Поддерживается Переменный размер стека Поддерживается только на 8086,80386 (конфигурация для 8086, 80386 устанавливается по умолчанию) Фиксированный размер стека Поддерживается (конфигурация для 80286 устанавливается по умолчанию) Интервал между "тиками" часов .05 сек (8086, 8088, 80186) .02 сек (80286, 80386)

Программная совместимость

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

Системы UNIX SCO-nn поставляются фирмой Santa Cruz Operations, Inc. Системы UNIX MS-nn поставляются фирмой Microsoft Corporation. Системы Intel UNIX поставляются фиромой Intel Corporation. Системы Atlos UNIX поставляются фирмой Atlos Computer Systems. Здесь nn обозначает тип процессора. UNIX обозначает версию системы UNIX, 2.3, 3.0 или System V.

Программная совместимость Процессор на вашей системеКомпилятор генерирует по умолчанию программы, работающие на процессоре в системеПрограммы, скомпилированные по умолчанию на процессоре в системеПрограммы, скомпилированные в режиме кросс-разработки для процессора в системе SCO-86 3.0 SCO-86 [3.0,Sys V]
SCO-186 3.0
SCO-286 Sys V SCO-86 3.0
SCO-186 3.0
Intel,Altos-86 2.3,3.0 DOS*

SCO-86
SystemV SCO-86 Sys V
SCO-186 Sys V
SCO-286 Sys V
MS-286 SysV SCO-86 [3.0,Sys V]
SCO-186 [3.0,Sys V]
SCO-286 Sys V
Intel,Altos-86 2.3,3.0 MS-286 3.0+
DOS*

SCO-186 3.0 SCO-86 [3.0,Sys V]
SCO-186[3.0,Sys V]
SCO-286 Sys V SCO-86 3.0
SCO-186 3.0
Intel,Altos-86 2.3,3.0 DOS*

SCO-86
SystemV SCO-86 Sys V
SCO-186 Sys V
SCO-286 Sys V
MS-286 SysV SCO-86 [3.0,Sys V]
SCO-186[3.0,Sys V]
SCO-286 Sys V
Intel,Altos-86 2.3,3.0 MS-286 3.0+
DOS*

SCO-286 3.0 SCO-286[3.0,Sys V]
MS-286 [3.0+,SysV] SCO-286 Sys 3.0
MS-286 3.0+ DOS*

SCO-86
SystemV SCO-86 Sys V
SCO-186 Sys V
SCO-286 Sys V
MS-286 Sys V SCO-86 [3.0,Sys V]
SCO-186[3.0,Sys V]
SCO-286[3.0,Sys V]
MS-286 [3.0+,SysV] SCO-286 3.0
MS-286 3.0+
DOS*

SCO-386
SystemV SCO-86 Sys V
SCO-186 Sys V
SCO-286 Sys V
SCO-386 Sys V
MS-286 Sys V
MS-386 Sys V SCO-86 [3.0,Sys V]
SCO-186[3.0,Sys V]
SCO-286[3.0,Sys V]
SCO-386[Sys V]
MS-286 [3.0+,SysV]
MS-386 [Sys V] SCO-286 3.0
MS-286 3.0+
DOS*

MS-286 3.0+ MS-286[3.0+,Sys V]
SCO-286 Sys V SCO-286 3.0 DOS*

MS-286
System V MS-286 Sys V
SCO-286 Sys V SCO-86 [3.0,Sys V]
SCO-186[3.0,Sys V]
SCO-286[3.0,Sys V] DOS*

MS-386
System V MS-386 Sys V
SCO-386 Sys V SCO-86 [3.0,Sys V]
SCO-186[3.0,Sys V]
SCO-286[3.0,Sys V]
SCO-386[Sys V] DOS*

* MS-DOS для процессоров i8086/8088, i80186 и i80286.

+ MS-286 3.0 UNIX эквивалентна системе Intel 286 3.0 UNIX

# непроверено в ожидании версии этой разработки

СМ. ТАКЖЕ

clockrate(HW), cc(1), ld(1), a.out(3).



MAIL(1)


НАЗВАНИЕ

mail - отправка пользователям почты или ее чтение

СИНТАКСИС

mail [-o] [-s] [-w] [-t] адресат ... mail [-e] [-h] [-p] [-q] [-r] [-f файл] [-F адресат ...]

ОПИСАНИЕ

Отправка почты

На отправку почты воздействуют следующие опции:

-o Подавить оптимизацию адреса.

-s Не вставлять перевод строки в начало отправляемого письма (см. ниже ПРЕДОСТЕРЕЖЕНИЯ).

-w Отправить письмо удаленному пользователю без ожидания завершения пересылки.

-t Добавить к письму строку "To: адресаты", что позволяет получателю знать всех адресатов письма.

Адресат обычно задается как входное имя пользователя [см. ]. Если адресат задан, предполагается, что выполняется отправка почты (за исключением случая опции -F). При этом текст отправляемого сообщения читается со стандартного ввода, пока либо не будет введен символ конца файла (CTRL+D), либо не будет введена строка, состоящая из единственной точки. Затем команда mail добавляет письмо к почтовому файлу каждого из адресатов. Письмо - это сообщение, перед которым стоит почтовый штемпель. Почтовый штемпель состоит из одной или нескольких строк "From ...", за которыми идет пустая строка (если только не была использована опция -s).

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

Если локальная система входит в стандартную коммуникационную сеть (см. команды подраздела 1C), можно отправить почту пользователю удаленной системы, адрес которого задается обычным для сети образом:

имя_системы![имя_системы! ...]имя_пользователя

Чтение почты

На чтение почты воздействуют следующие опции:

-e Установка кода завершения без вывода почты. Нулевое значение кода завершения означает, что у пользователя есть почта, в противном случае возвращается 1.

-h Показ окна с заголовками писем, а не текстов писем. Затем выдается приглашение "?".

-p Вывод текстов всех писем без промежуточных приглашений.

-q Завершить работу команды mail после получения прерывания. В противном случае прерывание вызывает лишь прекращение вывода текста письма.

-r Выводить тексты писем в порядке поступления.

-f файл Использовать файл вместо подразумеваемого почтового файла.

-F адресат Вызывает переадресацию последующей почты указанному адресату. Опция допустима, только когда у пользователя нет почты.


По умолчанию команда mail выводит тексты писем в порядке, обратном к порядку их поступления, то есть сначала выдается самая свежая почта. После выполнения очередного действия происходит либо выход из mail, если было обработано последнее письмо, либо выдается приглашение (символ "?") и со стандартного ввода читается строка, определяющая следующую команду. Для обработки и просмотра почты доступны следующие команды:

перевод_строки, + или n Перейти к следующему письму.

d или dp Удалить письмо и перейти к следующему. Как и в двух последующих командах, собственно удаление произойдет лишь в конце сеанса работы с mail.

d n Удалить письмо с номером n (письма нумеруются с 1, в порядке поступления). Не переходить к следующему письму.

dq Удалить письмо и выйти из mail.

h Показать заголовки писем, расположенных в окрестности текущего.

h n Показать заголовок письма с номером n.

h a Показать заголовки всех писем в пользовательском почтовом файле.

h d Показать заголовки писем, отмеченных на удаление.

p Снова показать текущее письмо.

- Показать предыдущее письмо.

a Показать письмо, пришедшее во время сеанса работы с mail.

n Показать письмо с номером n.

r [адресат ...] Ответить отправителю письма и другим адресатам, затем удалить сообщение.

s [файл ...] Сохранить письмо в указанных файлах (по умолчанию используется файл $HOME/mbox). Из почтового файла письмо удаляется.

y [файл ...] То же, что и предыдущая команда.

u [n] Снять отметку об удалении с письма номер n (по умолчанию используется номер последнего прочитан ного).

w [файл ...] Сохранить в указанных файлах только сообщение (без почтового штемпеля). По умолчанию используется файл $HOME/mbox.

m [адресат ...] Переслать текущее письмо указанным адресатам.

q или CTRL+D Оставить в почтовом файле только неудаленные письма и завершить сеанс работы с командой mail.

x Оставить почтовый файл неизменным и завершить сеанс работы с командой mail.

! команда Выполнить одну команду shell'а.

? Показать перечень команд.

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

Для видоизменения работы команды mail существует два способа обращения с почтовым файлом. Чтобы обеспечить необходимый уровень секретности, следует дать прочим пользователям право либо на чтение/запись этого файла, либо только на чтение, либо не дать никаких прав. Если режим доступа к почтовому файлу отличается от стандартного, файл будет сохранен, даже если станет пустым.

Если первой строкой почтового файла является



Forward to адресат

приходящая текущему пользователю почта будет пересылаться адресату. В этом случае к почтовому штемпелю будет добавлена строка "Forwarded by ...". Эта возможность полезна в рамках сети, чтобы собирать почту на одной машине и иметь информацию о том, какие письма и откуда пересылались. Установление и отмена режима переадресации производится посредством опции -F. Можно задать список адресатов, которым будет пересылаться почта. Элементы списка разделяются запятыми или пробелами, весь список заключается в кавычки. Длина списка - до 1024 байт. Напомним, что в общем случае адрес содержит один или несколько префиксов имя_системы!. Пример:

mail -F "guest sys6!guest"

Для отмены режима переадресации адресат должен быть пустым:

mail -F ""

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

ФАЙЛЫ

/etc/passwd Файл паролей используется для идентификации отправителей и адресатов. /usr/mail/пользователь Почтовый файл. $HOME/mbox Подразумеваемый файл для сохра нения писем. $MAIL Полное имя почтового файла. /tmp/ma* Временные файлы. /usr/mail/:saved/* Временные файлы. /usr/mail/*.lock Блокировочные файлы. dead.letter Прерванное письмо.

СМ. ТАКЖЕ

, , , .

ПРЕДОСТЕРЕЖЕНИЯ

В результате нескольких переадресаций может образоваться цикл. При попадании почты в цикл будет выдано сообщение

mail: Unbounded forwarding

Опцию -s следует использовать осторожно, так как без промежуточного перевода строки сообщение может быть проинтерпретировано как часть почтового штемпеля, что нарушит работу команды mail. Для совместимости с командой сделано так, что если первая строка сообщения - "Subject:...", то пустая строка не вставляется вне зависимости от использования опции -s.

СЮРПРИЗЫ

Иногда команда mail не может удалить блокировочный файл.

После возникновения прерывания следующее сообщение может не напечататься; команда p исправляет ситуацию.









MAILQ(1)FreeBSD Reference Manual


ИМЯ

mailq - печатает очередь на отправку почты

СИНТАКСИС

mailq [-v]

ОПИСАНИЕ

Mailq печатает очередь почтовых сообщений для дальнейшей отправки.

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

Mailq идентична команде ``sendmail -bp''.

-v Печатает более подробную информацию. Эта опция добавляет приоритет сообщения и некоторую информацию об отправляемом сообщении.

Утилита mailq возвращает 0 в случае успеха и значени >0 при ошибке.

СМ. ТАКЖЕ

sendmail(8)

ИСТОРИЯ

Команда mailq появилась в 4.0BSD.



MAILX(1)


НАЗВАНИЕ

mailx - интерактивная система обработки сообщений

СИНТАКСИС

mailx [-e] [-f [файл]] [-F] [-h номер] [-H] [-i] [-n] [-N] [-r адрес] [-s тема] [-u пользователь] [-U] [адресат ...]

ОПИСАНИЕ

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

Многие из сетевых возможностей команды mailx работают только при наличии стандартной коммуникационной сети (см. команды подраздела 1C).

Приходящая почта хранится в стандартном для каждого пользователя файле. Этот файл называется почтовым_ящиком пользователя. При вызове команды mailx для чтения сообщений, почтовый_ящик является стандартным местом, где их ищут. После чтения сообщения отмечаются для перемещения во вторичный файл с целью сохранения, если только не было указано, что данные сообщения более не понадобятся. Этот вторичный файл называется п_ящик и обычно расположен в основном каталоге пользователя $HOME; (информацию о данном файле можно найти в подпункте MBOX пункта Переменные окружения). Сообщения могут быть сохранены в других файлах, указанных пользователем. Во вторичном файле сообщения остаются до тех пор, пока их явно не удалят.

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

В командной строке опции начинаются с символа -, любые другие аргументы задают имена адресатов. Если адресаты не указаны, то mailx попытается прочесть сообщения из почтового_ящика. Допустимы следующие опции:

-e Проверка наличия почты. Команда ничего не печатает и прекращает работу с успешным кодом завершения, если существует почта для чтения.

-f [файл] Читать сообщения из файла вместо почтового_ящика. Если не указан файл, то используется п_ящик.

-F Записать сообщение в файл с именем первого адресата. Переменная record, даже если она установлена, во внимание не принимается (см. Переменные окружения).

-h номер Число сделанных до данного времени сетевых "переприемов" (повторных приемов). Это позволяет сетевому программному обеспечению избежать бесконечных циклов передач (см. addsopt в пункте Переменные окружения).

-H Вывести только заголовки.

-i Игнорировать прерывания. См. также ignore (Переменные окружения).

-n Не инициализироваться из подразумеваемого системного стартового файла mailx.rc.

-N Не выводить первоначальный список заголовков.

-r адрес Передать адрес сетевому программному обеспечению доставки почты. Запрещены все команды с тильдой (см. addsopt в пункте Переменные окружения).

-s тема Установить тему в поле заголовка Темы (Subject).

-u пользователь Прочитать почтовый_ящик пользователя. Данное действие выполняется только в том случае, если почтовый_ящик не защищен от чтения.

-U Преобразовать адреса в стиле uucp в межсетевые стандарты. Данная опция игнорирует переменную окружения conv (см. addsopt в пункте Переменные окружения).


При чтении почты утилита mailx находится в командном режиме. На экран выводятся заголовки первых нескольких сообщений, а затем выводится приглашение, означающее готовность к вводу стандартных команд (см. ниже пункт Команды). При посылке почты mailx находится в режиме ввода. Если в командной строке не специфицирована тема, то выдается приглашение на ее ввод. ("Тема" с длиной, большей 1024 символа, вызовет дамп образа памяти). После того, как сообщение набрано, программа mailx прочтет его и сохранит во временном файле. Команды можно вводить с помощью указания тильды (~) в качестве первого символа строки, затем единственной буквы команды и необязательных аргументов. Список этих команд приводится в пункте Команды с тильдой.

В любой момент времени поведением утилиты mailx управляет множество переменных окружения, которые делятся на две группы: флаги и переменные со значениями. Они создаются и удаляются с помощью команд set и unset (подробнее см. далее Переменные окужения).

В командной строке адресаты могут задаваться тремя способами: как входные имена пользователей, как команды shell'а или как псевдогруппы. Входные имена могут быть произвольным сетевым адресом [см. ]. Если оказалось, что почту невозможно доставить, то производится попытка вернуть ее в почтовый_ящик отправителя. Если имя получателя начинается с символа канала |, то остаток имени рассматривается как команда shell'а, играющая роль фильтра. Подобный подход предоставляет автоматический интерфейс с любой программой, читающей со стандартного ввода (например, с программой , если нужно получать твердую копию отправляемой почты). Псевдогруппы создаются с помощью команды alias (см. ниже Команды) и являются списком адресатов произвольного типа.

Команды, выполняемые в командном режиме, как правило, имеют следующий формат:

[команда] [список_сообщений] [аргументы]

Если в командном режиме команда не специфицирована, то подразумевается print. В режиме ввода команды распознаются по управляющему символу, а строки, не распознанные как команды, считаются строками сообщения.

Каждому сообщению назначается последовательный номер и в любой момент времени существует понятие текущего сообщения, отмечаемого в списке заголовков правой угловой скобкой (>). Многие команды оперируют с необязательным аргументом - списком_сообщений. Значением по умолчанию для этого списка является текущее сообщение. Список_сообщений - это список идентификаторов сообщений, разделенных пробелами. В список могут входить:



n Сообщение номер n.

. Текущее сообщение

^ Первое неудаленное сообщение.

$ Последнее сообщение.

* Все сообщения.

n-m Интервал (включая концы) сообщений с указанными номерами.

пользователь Все сообщения от данного пользователя.

/цепочка_символов Все сообщения, у которых в строке темы есть указанная цепочка (большие и малые буквы не различаются).

:c Все сообщения типа c, где c может принимать одно из следующих значений:

d удаленные сообщения; n новые сообщения; o старые сообщения; r прочитанные сообщения; u непрочитанные сообщения.

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

Другие аргументы являются обычно произвольными цепочками символов, использование которых зависит от применяемой команды. Расширение имен файлов (там, где подразумевается их использование) подчиняется обычным соглашениям shell'а [см. ]. Отдельные команды распознают специальные символы, что отражено ниже в описании команд.

Во время запуска утилита mailx пытается выполнить команды сначала из необязательного системного файла (/usr/lib/mailx/mailx.rc) для инициализации определенных параметров, затем из пользовательского стартового файла ($HOME/.mailrc). В стартовых файлах могут применяться стандартные команды, за некоторыми исключениями, оговоренными ниже. Чаще всего стартовые файлы используются для установки первоначальных характеристик терминала и создания псевдогрупп. В стартовом файле недопустимы следующие команды: !, Copy, edit, followup, Followup, hold, mail, preserve, reply, Reply, shell и visual. Ошибка в стартовом файле вызывает игнорирование оставшихся в нем строк. Файл .mailrc не обязателен и должен создаваться пользователем.

Команды

Ниже приводится полный список команд утилиты mailx:

! команда_shell'а Выполнение команды shell'а. См. SHELL (Переменные окружения).

# комментарий Пустая команда (комментарий). Полезно применять в стартовых mailrc-файлах.

= Вывести номер текущего сообщения.

? Вывести справочную информацию о командах.

alias псевдогруппа имя ... Определение псевдогруппы. Указанные имена будут подставляться, если в качестве адресата используется псевдогруппа. Полезно применять в стартовых mailrc-файлах.

alternates имя ... Об является список альтернатив для вашего входного имени. При ответе на сообщение имена из этого списка удаляются из списка адресатов. Без аргументов данная команда выводит текущий список альтернативных имен. См. также allnet (Переменные окружения).

cd [каталог]
chdir [каталог] Сменить каталог. Если каталог не задан, то используется значение $HOME.

copy [файл]
copy [список_сообщений] файл Скопировать сообщения в файл, не отмечая их как сохраненные. Во всем остальном эквивалентно команде сохранения save.

Copy [список_сообщений] Сохранить указанные сообщения в файле с именем автора сохраняемого сообщения. Сообщения не отмечаются как сохраненные. Во всем остальном эквивалентно команде сохранения Save.

delete [список_сообщений] Удалить сообщения из почтового_ящика. Если установлена переменная autoprint, то выводится следующее за последним удаленным сообщение (см. Переменные окружения).

discard [поле_заголовка ...] При изображении сообщений на экране подавлять вывод указанных полей_заголовка. В качестве примера можно привести поля status и cc. Эти поля добавляются при сохранении сообщения. Данная команда игнорируется командами Print и Type.

dp [список_сообщений]
dt [список_сообщений] Удалить указанные сообщения из почтового_ящика и вывести сообщение, идущее следом за последним из удаленных. Приблизительно эквивалентно команде удаления delete, за которой вызвали команду печати print.

echo цепочка_символов ... Выдать эхоотображение цепочек_символов, аналогично .

edit [список_сообщений] Редактировать сообщения. Указанные сообщения помещаются во временный файл, для получения имени редактора используется переменная EDITOR (см. Переменные окружения). Значением по умолчанию является .

exit Выйти из утилиты mailx, не изменяя почтовый_ящик. Не происходит и сохранения сообщений в п_ящике (см. также quit).

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



% текущий почтовый_ящик %пользователь почтовый_ящик пользователя # предыдущий файл & текущий п_ящик

Подразумеваемым является текущий почтовый_ящик.

folders Вывести имена файлов в каталоге, имя которого содержится в переменной folder (см. Переменные окружения).

followup [сообщение] Ответить на сообщение, записывая ответ в файл, имя которого определяется по имени автора сообщения. Переменная record, даже если она установлена, во внимание не принимается. См. также команды Followup, Save и Copy, а также переменную outfolder (Переменные окружения).

Followup [список_сообщений] Ответить на первое сообщение в списке. Ответ посылается авторам каждого сообщения из списка. Строка темы берется из первого сообщения, а ответ записывается в файл, имя которого определяется по автору первого сообщения. См. также команды Followup, Save и Copy, а также переменную outfolder (Переменные окружения).

from [список_сообщений] Вывести перечень заголовков для указанных сообщений.

group псевдогруппа имя ... То же, что alias.

headers [сообщение] Вывести страницу заголовков сообщений, включающую специфицированное сообщение. Переменная screen устанавливает число заголовков на странице (см. Переменные окружения). См. также команду z.

help Вывести список команд.

hold [список_сообщений] Сохранить указанные сообщения в почтовом_ящике.

if s|r
  команды_почты
else
  команды_почты
endif Условное выполнение команд_почты. Условие s истинно, если утилита находится в режиме отправки почты; условие r истинно, если утилита находится в режиме приема почты. Полезно применять данное средство в стартовом mailrc-файле.

ignore [поле_заголовка ...] То же, что discard.

list Вывести без пояснений список всех доступных команд.

mail адресат ... Направить сообщение указанным адресатам.

Mail адресат Направить сообщение указанному адресату и записать копию в файл, названный по имени адресата.

mbox [список_сообщений] Записать в случае нормального завершения работы утилиты mailx специфицированные сообщения в стандартный файл п_ящик. Для получения информации о данном файле см. MBOX (Переменные окружения). См. также команды exit и quit.

next [список_сообщений] Перейти к следующему сообщению, соответствующему какому-либо элементу списка_сообщений.

pipe [список_сообщений] [команда_shell'а] | [список_сообщений] [команда_shell'а] Организовать конвейерную передачу сообщения данной команде_shell'а. Это сообщение обрабатывается так, как будто оно было считано. При отсутствии аргументов текущее сообщение передается команде, определяемой значением переменной cmd. Если установлена переменная page, то после каждого сообщения вставляется символ переход_к_новой_странице (см. Переменные окружения).

preserve [список_сообщений] То же, что и hold.

Print [список_сообщений] Вывести на экран указанные сообщения (вывод со всеми полями заголовка). При этом игнорируется подавление вывода полей, заданное с помощью команды ignore.

print [список_сообщений]
type [список_сообщений] Вывести указанные сообщения. Если установлена переменная crt, то организуется постраничная печать с длиной страницы, задаваемой переменной crt. Имя программы, организующей постраничную печать, определяется по переменной PAGER, значением по умолчанию является (см. Переменные окружения).

quit Выйти из утилиты mailx, сохраняя прочитанные сообщения в п_ящике, а непрочитанные - в почтовом_ящике. Удаляются сообщения, для которых было явно указано сохранение в файле.

Reply [список_сообщений]
Respond [список_сообщений] Послать ответ автору каждого сообщения в списке. Строка темы берется из первого сообщения. Если в переменной record установлено имя файла, то ответ сохраняется в конце указанного файла (см. Переменные окружения).

reply [сообщение]
respond [сообщение] Ответить на данное сообщение, включая всех других получателей сообщения. Если в переменной record установлено имя файла, то ответ сохраняется в конце указанного файла (см. Переменные окружения).

Save [список_сообщений] Сохранить указанные сообщения в файле, имя которого определяется по автору первого сообщения. Имя файла - это имя автора, из которого удалены все сетевые компоненты. См. также команды Copy, followup и Followup и переменную outfolder (Переменные окружения).

save [файл]
save [список_сообщений] файл Сохранить специфицированные сообщения в указанном файле. В случае отсутствия файла он создается. Сообщение удаляется из почтового_ящика при завершении mailx, если только не установлена переменная keepsave (см. также Переменные окружения и команды exit и quit).

set
set имя
set имя=цепочка_символов
set имя=число Определить переменную с указанным именем. Переменная может либо не иметь значения, либо иметь в качестве значения цепочку символов или число. Команда set без аргументов выдает список имен и значений всех определенных переменных. Для получения подробной информации о переменных программы mailx см. пункт Переменные окружения.

shell Вызвать интерактивный shell [см. также SHELL (Пе ременные окружения)].

size [список_сообщений] Выдать размер (в символах) указанных сообщений.

source файл Прочитать команды из указанного файла и вернуться в командный режим.

top [список_сообщений] Вывести для указанных сообщений несколько начальных строк. В случае установки переменной toplines ее значение рассматривается как число строк, которые надо вывести (см. Переменные окружения). Значение по умолчанию равно 5.

touch [список_сообщений] "Коснуться" указанных сообщений. Любое сообщение из списка, если только оно специально не сохранено в файле, будет помещено при нормальном завершении работы в п_ящик. См. также exit и quit.

Type [список_сообщений] То же, что и Print.

type [список_сообщений] То же, что и print.

undelete [список_сообщений] Восстановить указанные удаленные сообщения. Восстанавливаются только сообщения, удаленные во время текущего сеанса. В случае установки переменной autoprint выводится последнее из восстановленных сообщений (см. Переменные окружения).

unset имя ... Вызывает удаление указанных переменных. Если переменная была импортирована из окружения выполнения (то есть это переменная shell'а), ее нельзя удалить.

version Выводит текущие номер версии и дату выпуска.

visual [список_сообщений] Редактировать данные сообщения с помощью экранного редактора. Сообщения помещаются во временный файл, а для получения имени редактора используется переменная VISUAL (см. Переменные окружения).

write [список_сообщений] файл Записать сообщения в указанный файл, при этом не записывается заголовок сообщения и следующая за ним пустая строка. Во всем остальном эквивалентно команде сохранения save.

xit То же, что и exit.

z[+ или -] Прокрутить список заголовков вперед или назад на полный экран. Число изображаемых заголовков устанавливается переменной screen (см. Переменные окружения).



Команды с тильдой

Следующие команды можно вызывать только в режиме ввода, начиная строку с символа тильда (~). Чтобы использовать для той же цели другой символ, нужно изменить значение переменной escape (см. Переменные окружения).

~!команда_shell'а Выполнить команду shell'а.

~. Закончить ввод сообщения.

~:команда_почты
~_команда_почты

Выполнить командный запрос. Имеет силу только при посылке сообщения во время чтения почты.

~? Вывести справочную информацию о командах с тильдой.

~A Вставить в сообщение цепочку символов - значение переменной Sign (см. Переменные окружения).

~a Вставить в сообщение цепочку символов - значение переменной sign (см. Переменные окружения).

~b имя ... Добавить имена в Bcc-список.

~c имя ... Добавить имена в Cc-список.

~d Прочитать файл dead.letter. Для получения дополнительной информации см. переменную DEAD (Переменные окружения).

~e Вызвать для вводимого сообщения редактор. См. также переменную EDITOR (Переменные окружения). ~f [список_сообщений] Вставить указанные сообщения. Эти сообщения без изменений вставляются в редактируемое сообщение.

~h Вывести подсказку для строки темы и списков To, Cc и Bcc. Если поле изображается с исходным значением, то его можно редактировать так же, как если бы его только что ввели. ~i имя_переменной Вставить в текст сообщения значение указанной переменной. Например, ~A эквивалентно команде ~i Sign.

~m [список_сообщений] Вставить указанные сообщения в письмо, при этом новый текст сдвигается вправо на одну табуляцию. Имеет силу только при посылке сообщения во время чтения почты.

~p Выдать сообщение, которое в данный момент вводится.

~q Имитируя прерывание, выйти из режима ввода. Если тело сообщения не пусто, то сообщение сохраняется в файле dead.letter. Для получения дополнительной информации об этом файле см. переменную DEAD (Переменные окружения). ~r файл
~~< файл
~~< !команда_shell'а Загрузить указанный файл. Если аргумент ничинается с восклицательного знака !, то остаток строки рассматривается как произвольная команда shell'а, которая выполняется, а ее стандартный вывод вставляется в сообщение.

~s цепочка_символов ... Присвоить теме специфицированную цепочку_символов.

~t имя ... Добавить указанные имена в список To.



~ v Вызвать для неполного сообщения предпочитаемый Вами экранный редактор. См. также переменную VISUAL (Переменные окружения).

~w файл Записать в указанный файл неполное сообщение без заголовка.

~x Такой же выход, что и ~q, только сообщение не сохраняется в файле dead.letter.

~|команда_shell'а Передать тело сообщения данной команде_shell'а. Если она возвращает успешный код завершения, то вывод команды замещает сообщение.

Переменные окружения

Следующие переменные наследуются из shell-окружения времени выполнения и не могут быть изменены при работе утилиты mailx.

HOME=каталог

Основной каталог пользователя.

MAILRC=файл

Имя стартового файла. Значением по умолчанию является $HOME/.mailrc.

Следующие переменные являются внутренними переменными утилиты mailx. Их можно импортировать из shell-окружения времени выполнения или устанавливать с помощью команды set. Для удаления переменных можно использовать команду unset. addsopt

Флаг, который не должен быть установлен, если в качестве программы пересылки почты не используется /bin/mail, (то есть в этом случае должно быть специфицировано noaddsopt, см. ниже ПРЕДОСТЕРЕЖЕНИЯ).

allnet

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

append

Флаг, предписывающий при терминации добавлять сообщения в конец файла п_ящик, а не в его начало. Значением по умолчанию является noappend.

askcc

Флаг - после ввода сообщения выдать приглашение для Cc-списка. Значением по умолчанию является noaskcc.

asksub

Выдать приглашение для темы, если она не специфицирована в командной строке с помощью опции -s. По умолчанию этот флаг установлен.

autoprint

Флаг - разрешить автоматический вывод сообщений после команд delete и undelete. Значением по умолчанию является noautoprint.

bang

Флаг - разрешить специфичное использование восклицательного знака ! при вызове командной строки shell'а, например в . Значением по умолчанию является nobang.

cmd=команда_shell'а



Установить подразумеваемое значение команды для pipe. По умолчанию значение этой переменной не определено.

conv=преобразование

Преобразовать адреса uucp в адреса указанного типа. В настоящее время единственное реализованное преобразование - internet, для которого требуется программа пересылки со стандартом адресации электронной почты RFC822. По умолчанию преобразование запрещено. См. также переменную sendmail и опцию командной строки -U.

crt=число

Организовать передачу сообщений с количеством строк, превышающим число, в фильтрующую программу, задаваемую значением переменной PAGER [по умолчанию ]. По умолчанию такая передача запрещена.

DEAD=файл

Имя файла, в котором в случае несвоевременного прерывания сохраняются неоконченные письма. Значением по умолчанию является $HOME/dead.letter.

debug Флаг - для отладки разрешить выдачу расширенной диагностики. Сообщения на самом деле не посылают ся. Значение по умолчанию nodebug.

dot Флаг - воспринимать единственную точку на строке во время ввода с терминала как конец файла. Значение по умолчанию - nodot.

EDITOR=команда_shell'а

Команда, которая запускается в случае использования edit или ~e. Значением по умолчанию является .

escape=c

Подставить символ c вместо специального символа ~. Вступает в силу только с посылки следующего сообщения.

folder=каталог

Имя каталога для сохранения стандартных почтовых файлов. Заданные пользователем имена файлов, начинающиеся со знака +, преобразуются в реальные имена файлов с помощью добавления имени данного каталога перед именем файла. Если каталог не начинается с символа /, то впереди приписывается $HOME. Для использования конструкции с плюсом в командной строке утилиты mailx необходимо, чтобы переменная folder была экспортированной переменной окружения в смысле shell'а. Значения по умолчанию для переменной не существует. См. ниже описание переменной outfolder.

header

Флаг - разрешить выдачу списка заголовков при входе в утилиту mailx. По умолчанию разрешено.

hold Флаг - сохранить все прочитанные сообщения в почтовом_ящике, а не отправлять их в стандартный файл хранения п_ящик. Значение по умолчанию nohold.

ignore Флаг - при вводе сообщений игнорировать прерывания. Такая возможность удобна для зашумленных коммутируемых линий связи. Значение по умолчанию noignore.

ignoreeof



Флаг - игнорировать конец файла при вводе сообщения. Ввод следует прерывать с помощью команды ~. или с помощью ввода строки, состоящей из единственной точки. Значение по умолчанию noignoreeof. См. также переменную dot, описанную выше.

keep Флаг - не удалять файл почтового_ящика, а обрезать его до нулевой длины в случае, если он пуст. Значение по умолчанию nokeep.

keepsave

Флаг - сохранять в почтовом_ящике, а не удалять уже сохраненные в других файлах сообщения. Значение по умолчанию nokeepsave.

MBOX=имя_файла

Имя файла для сохранения прочитанных сообщений. Команда exit игнорирует данную функцию, выполняя сохранение явно указанных сообщений в другом файле. Значением по умолчанию является $HOME/mbox.

metoo Флаг - если Ваше входное имя появилось в качестве получателя почты, то не удалять его из списка. Значение по умолчанию nometoo.

LISTER=команда_shell'а

Команда, используемая при показе folder-каталога. Значением по умолчанию является .

onehop

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

outfolder

Флаг - вызывает размещение в folder-каталоге файлов, используемых для записи выходящих сообщений. Это выполняется, если только маршрутное имя не задано полностью. Значением по умолчанию является nooutfolder. См. выше переменную folder и команды Save, Copy, followup и Followup.

page Флаг - используется вместе с командой pipe для вставки символа перехода к новой странице после каждого сообщения, переданного по конвейеру. Значение по умолчанию nopage.

PAGER=команда_shell'а

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

prompt=цепочка_символов



Установить цепочку_символов в качестве приглашения в командном режиме. Значение по умолчанию "? ".

quiet Флаг - воздержаться при запуске программы mailx от выдачи заголовка с номером версии. Значение по умолчанию noquiet.

record=файл Записывать всю исходящую почту в файле. По умолчанию записи не происходит. См. также переменную outfolder.

save Флаг - разрешить сохранение сообщений в файле dead.letter при прерывании или ошибке пересылки. Для получения информации о данном файле см. переменную DEAD. По умолчанию разрешено.

screen=число

Установить для команды headers число строк в списке заголовков.

sendmail=команда_shell'а

Альтернативная программа для пересылки сообщений. Значение по умолчанию .

sendwait

Флаг - ждать окончания пересылки. Значение по умолчанию nosendwait.

SHELL=команда_shell'а

Имя предпочитаемого командного интерпретатора. Значение по умолчанию .

showto

Флаг - при изображении заголовков выдавать не имя автора, а имя получателя, если Вы являетесь автором сообщения.

sign=цепочка_символов

Цепочка_символов вставляется в текст сообщения при выдаче команды ~a (автограф). Значения по умолчанию нет [см. также ~i (Команды с тильдой)].

Sign=цепочка_символов

Цепочка_символов вставляется в текст сообщения при выдаче команды ~A. Значения по умолчанию нет [см. также ~i (Команды с тильдой)].

toplines=число

Число строк заголовка, выдаваемых по команде top. Значение по умолчанию равно 5.

VISUAL=команда_shell'а

Имя предпочитаемого экранного редактора. Значение по умолчанию .

ФАЙЛЫ

$HOME/.mailrc Личный стартовый файл. $HOME/.mbox Вторичный файл хранения. /usr/mail/* Каталог почтовой службы. /usr/lib/mailx/mailx.help* Файлы справочных сообщений. /usr/lib/mailx/mailx.rc Необязательный общий стар- товый файл. /tmp/R[emqsx]* Временные файлы.

СМ. ТАКЖЕ

, , .

ПРЕДОСТЕРЕЖЕНИЯ

Опции -h, -r, -U можно использовать только в том случае, если утилита mailx пересылает почту посредством программы, отличной от /bin/mail.

СЮРПРИЗЫ

Там, где допустима команда_shell'а, не всегда допустимы ее аргументы. Рекомендуется поэкспериментировать.

Невозможно выполнить команду unset для внутренних переменных, импортированных из shell-окружения времени выполнения.

Утилита mailx не полностью поддерживает всю сетевую адресацию. Для стабилизации новых стандартов необходимо некоторое время.

Попытки послать сообщение со строкой, содержащей только "." трактуются утилитой (стандартной программой передачи почты) как конец сообщения.









MAKE(1)


НАЗВАНИЕ

make - поддержка, обновление и восстановление групп программ

СИНТАКСИС

make [-f make-файл] [-p] [-i] [-k] [-s] [-r] [-n] [-b] [-e] [-u] [-t] [ [целевой_файл ...]

ОПИСАНИЕ

Утилита make позволяет поддерживать, изменять и регенерировать группы программ. Ниже приведено краткое описание всех опций и некоторых специальных имен:

-f make-файл

Задание имени файла с описаниями.

-p Вывести все макроопределения, а также описания зависимостей и операций для создания целевых_файлов.

-i Игнорировать коды ошибок, возвращаемых запускаемыми программами. Этот режим устанавливается также при появлении в файле описаний специального целевого имени .IGNORE.

-k При ошибке прекращать выполнение команд, связанных с текущей зависимостью, но продолжать обработку других зависимостей.

-s Не выводить командные строки перед их выполнением. Этот режим устанавливается также при появлении в файле описаний специального целевого имени .SILENT.

-r Не использовать встроенные правила.

-n Выводить команды, но не выполнять их. Выводятся даже команды, которые начинаются с @.

-b Режим для совместимости со старыми версиями make-файлов.

-e В первую очередь используются переменные окружения, а не одноименные макросы make-файлов.

-u Вызывает безусловное обновление.

-t "Массаж" целевых_файлов: время их создания устанавливается равным текущему времени; команды, предназначенные для получения целевых_файлов, не выполняются.

-q Запрос. Команда make возвращает нулевой или ненулевой код завершения в зависимости от того, нужно ли обновлять целевые_файлы (0, если не нужно). Печать команд подавляется, даже если присутствует опция -n.

.DEFAULT

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

.PRECIOUS

Файлы, которые зависят от этого специального имени, не удаляются, если работа команды make была прервана или прекращена.

.SILENT

Дает тот же эффект, что и опция -s.

.IGNORE


Дает тот же эффект, что и опция -i.

Make выполняет команды из make-файла для обновления одного или нескольких целевых_файлов, имена которых указаны в команде. Если отсутствует опция -f, то ищутся файлы makefile, Makefile, и файлы системы управления исходными текстами (SCCS) s.makefile и s.Makefile в указанном порядке. Если вместо make-файла указан -, то это означает стандартный ввод. В командной строке может встретиться более чем одна пара -f make-файл.

Команда make обновляет целевой_файл только в том случае, если файлы, от которых он зависит, оказываются новее в смысле времени модификации (кроме случая, когда была использована опция -u с целью вызвать безусловное обновление). Все файлы, от которых зависит целевой_файл добавляются рекурсивно к списку целевых файлов. Отсутствующие файлы считаются требующими обновления.

Make-файл состоит из последовательности разделов, определяющих зависимости. Первая строка раздела - непустой список разделенных пробелами имен целевых файлов, затем знак :, затем (возможно пустой) список необходимых файлов или зависимостей. Текст, следующий за ; и все последующие строки, начинающиеся с табуляции, представляет собой команды shell'а, которые необходимо выполнить для обновления целевого файла. Первая строка, которая не начинается с табуляции или #, открывает новое описание зависимости или макроопределение. Команды shell'а могут быть продолжены в следующей строке, если последним символом текущей строки поставить \. Все, что выводит make, кроме начальных символов табуляции, передается shell'у в исходном виде. Например,

echo a\ b

даст

ab

как если бы команда выполнялась просто shell'ом.

Символы # и перевод_строки обрамляют комментарии.

В приведенном ниже make-файле определяется, что pgm зависит от двух файлов: a.o и b.o, и что они в свою очередь зависят от соответствующих исходных файлов (a.c и b.c) и общего файла incl.h:

pgm: a.o b.o cc a.o b.o -o pgm a.o: incl.h a.c cc -c a.c b.o: incl.h b.c cc -c b.c

Командные строки выполняются по одной, каждая своим собственным shell'ом. Чтобы указать, каким shell'ом выполнять команду, можно использовать переменную окружения SHELL. Первые один или два символа команды могут быть следующими: -, @, -@, @-. Если присутствует @, то подавляется вывод команды. При указании символа - make игнорирует ошибки. Команда перед ее выполнением выводится, если только не указана опция -s, или в make-файле отсутствует вход .SILENT:, или в начале команды не стоит знак @. Опция -n специфицирует вывод команд без их выполнения; однако, если командная строка содержит текст $(MAKE), то она всегда выполняется (см. MAKEFLAGS в пункте Окружение). Если указана опция -t, то изменяется время последней модификации файлов без выполнения каких-либо команд. К сожалению, при этом не изменяются даты сохранения файлов в библиотеках (см. Библиотеки), а меняется только время последней модификации библиотеки.

Команды, возвращающие ненулевой код завершения, обычно прекращают выполнение make. Если же указана опция -i или в make-файле присутствует вход .IGNORE:, или командная строка начинается со знака -, то ошибки игнорируются. Если указана опция -k, то прекращается обработка текущего раздела, но продолжаются действия, которые не зависят от целевого файла этого раздела. В конце выводится сообщение о первоначальных целях, которые не были достигнуты.

Опция -b позволяет без ошибок выполнять make-файлы, написанные для старой версии make'а. Отличие состоит в том, что в новой версии все строки зависимостей должны содержать (возможно пустые или задаваемые по умолчанию) команды, связанные с ними. В предыдущей версии считалось, что неспецифицированная команда является пустой.

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

Окружение



Команда make читает окружение. Все переменные окружения обрабатываются как макроопределения. Все они читаются и обрабатываются до обработки make-файла и после обработки встроенных правил; поэтому макроопределения из make-файла перекрывают макроопределения из окружения. Если задана опция -e, то переменные из окружения перекрывают макроопределения из make-файла. Суффиксы и связанные с ними правила из make-файла перекрывают описания суффиксов во встроенных правилах.

Переменная окружения MAKEFLAGS обрабатывается как содержащая любую из допустимых опций (кроме -f и -p), описанных для командной строки. Далее, если такой переменной в окружении нет, то make создает ее, помещая в нее все указанные в командной строке опции, и передает ее всем запускаемым им командам. Таким образом, MAKEFLAGS всегда содержит текущие опции. Эта возможность очень полезна, если возникла необходимость отладить make-файл для проекта, состоящего из подсистем, для которых есть свои собственные make-файлы. Как уже отмечалось выше (при использовании опции -n) команда $(MAKE) выполняется всегда, следовательно, можно выполнить make -n рекурсивно по всему проекту, чтобы посмотреть, что было бы выполнено при отсутствии опции -n. Это возможно, так как флаг -n помещается в MAKEFLAGS и передается при вызове $(MAKE). Тем самым перед нами один из способов проверить все make-файлы проекта, не выполняя их на самом деле.

Включение файлов

Если в make-файле строка начинается с цепочки символов include и после нее пробел или табуляция, то остаток строки после подстановки макросов считается именем файла и этот файл будет прочтен и включен в make-файл.

Макросы

Разделы, имеющие вид

цепочка1=цепочка2

являются макроопределениями. В цепочку2 входят все символы до начала комментария или до неэкранированного перевода строки. Последующие вхождения конструкции $(цепочка1[:подцеп1=[подцеп2]]) заменяются цепочкой2. При этом, если в цепочке2 встречаются подцепочки подцеп1, за которыми следует пробел или табуляция, и подцеп1 начинается с точки, они заменяются на подцепочку подцеп2. Если имя макроса состоит из одного символа и нет подстановок, то круглые скобки можно опускать. Пример использования подстановок см. в пункте Библиотеки.

Внутренние макросы



Мake поддерживает пять внутренних макросов, полезных при написании правил построения целевых файлов:

$* Этот макрос является именем файла без расширения из текущей зависимости; вычисляется только для подразумеваемых правил (см. Суффиксы).

$@ Этот макрос заменяется на полное имя целевого файла; вычисляется только для явно заданных зависимостей.

$< Вычисляется только для подразумеваемых правил или для правила .DEFAULT. Этот макрос заменяется на имя файла, от которого по умолчанию зависит целевой файл. Так, в правиле .c.o макрос $< будет заменен на имя файла с расширением .c. Например, правило для изготовления оптимизированного об ектного файла из файла с расширением .c может быть таким:

.c.o: cc -c -O $*.c

или

.c.o: cc -c -O $<

$? Макрос $? можно использовать в явных правилах make-файла. Этот макрос заменяется на список файлов-источников, которые изменялись позднее целевого файла.

$% Этот макрос применяется только тогда, когда целевой файл указан в виде библ(файл.o), что означает, что он находится в библиотеке библ. В этом случае $@ заменяется на библ (имя архива), а $% заменяется на настоящее имя файла, файл.o.

Четыре из этих макросов имеют альтернативную форму. Если к любому из этих макросов добавлено F, то он заменяется на соответствующее макросу имя файла без имени каталога; если же добавлено D, то макрос заменяется на остальную часть значения первоначального макроса без последнего символа /, то есть на имя каталога. Так, $(@D) соответствует каталогу из $@. Если каталог не указан, то генерируется текущий каталог (.). Только макрос $? не имеет альтернативной формы.

Суффиксы

Некоторые файлы (например файлы, имена которых оканчиваются на .o) имеют подразумеваемые источники, например, файлы, имена которых оканчиваются на .c, .s и т.д. Если для этих файлов не указаны команды их модификации в make-файле, но существуют подразумеваемые источники, то они (источники) компилируются для получения требуемых файлов. В таких случаях make применяет подразумеваемые (встроенные) правила вывода, позволяющие получить одни файлы из других путем исследования суффиксов и определения соответствующих команд. Подразумеваемые правила вывода таковы:



.c .c~ .f .f~ .sh .sh~ .c.o .c.a .c~.o .c~.c .c~.a .f.o .f.a .f~.o .f~.f .f~.a .h~.h .s.o .s~.o .s~.s .s~.a .sh~.sh .l.o .l.c .l~.o .l~.l .l~.c .y.o .y.c .y~.o .y~.y .y~.c

Встроенные правила можно изменять. Чтобы вывести их в виде, пригодном для изменения, нужно воспользоваться командой

make -fp - 2>/dev/null rules

Символ ~ (тильда) используется в этих правилах для SCCS-файлов [см. ]. Так, правило .c~.o трансформирует SCCS C-файл в об ектный файл .o. Так как s. в SCCS-файлах является префиксом, то это несовместимо с принятым в make способом определения правила по суффиксу. Использование тильды вызывает замену ссылки на файл ссылкой на SCCS-файл.

Правила с одним суффиксом (например .c:) описывают, как получить файл x из x.c (то есть второй суффикс пустой). Это полезно для построения целевого файла только из одного исходного файла (например, для построения shell-процедуры или простой C-программы).

Дополнительные суффиксы даются как список зависимостей для специального имени .SUFFIXES. При этом важен порядок: первое возможное имя, для которого существуют и файл и правило, используется как имя источника. По умолчанию этот список выглядит так:

.SUFFIXES: .o .c .c~ .y .y~ .l .l~ .s .s~ .h~ .h .f .f~ .sh~ .sh

Команда, указанная выше для вывода списка встроенных правил, показывает также встроенный список суффиксов. Многократные указания .SUFFIXES: об единяют списки суффиксов; указание .SUFFIXES: с пустым списком очищает список суффиксов.

Подразумеваемые правила

Пример с целевым файлом pgm можно записать короче:

pgm: a.o b.o cc a.o b.o -o pgm a.o b.o: incl.h

Это возможно, так как make использует набор внутренних правил. Пользователь может добавить правила просто поместив их в make-файл.

Некоторые макросы используются в подразумеваемых правилах, чтобы разрешить включение опций в какую-нибудь из получающихся команд. Например, CFLAGS, LFLAFS, и YFLAGS используется для задания опций компиляторам , , и соответственно. Для определения значений по умолчанию этих макросов можно снова порекомендовать описанный ранее метод для просмотра встроенных правил.

Подразумеваемые правила можно изменять. Правило создания файла с суффиксом .o из файла с суффиксом .c указывается как раздел с именем .c.o: и пустым списком зависимостей. Команды shell'а, связанные с этим именем, определяют способ получения файла .o из файла .c. Любое имя, в которое не входит символ /, и которое начинается с точки, распознается как имя правила, а не настоящего целевого файла.

Библиотеки



Если целевой файл или имя из списка зависимостей содержит скобки, то оно рассматривается как имя архивной библиотеки, а цепочка символов в скобках - как имя элемента библиотеки. Так, и библ(файл.o), и $(БИБЛ)(файл.o) обозначают библиотеку, содержащую файл.o (предполагается, что макрос БИБЛ был предварительно определен). Выражение $(БИБЛ)(файл1.o файл2.o) недопустимо. Правила обработки библиотечных файлов имеют вид .XX.a, где XX - суффикс, по которому будет получен элемент библиотеки. К сожалению, в текущей реализации требуется, чтобы XX отличался от суффикса элемента библиотеки. Например, нельзя, чтобы библ(файл.o) зависел от файл.o явно. Наиболее общее использование интерфейса работы с библиотеками следующее (предполагается, что исходными являются файлы на языке C):

lib: lib(file1.o) lib(file2.o) lib(file3.o) @echo lib is now up-to-date .c.a: $(CC) -c $(CFLAGS) $< $(AR) $(ARFLAGS) $@ $*.o rm -f $*.o

Фактически, правило .c.a, приведенное выше, встроено в make. Более интересный, но более ограниченный пример конструкции, поддерживающей работу с библиотеками:

lib: lib(file1.o) lib(file2.o) lib(file3.o) $(CC) -c $(CFLAGS) $(?:.o=.c) $(AR) $(ARFLAGS) lib $? rm $? @echo lib is now up-to-date .c.a:;

Здесь используется режим подстановки расширений макросов. Список $? определен как множество имен об ектных файлов (в библиотеке lib), чьи исходные C-файлы были изменены. Подстановка заменяет .o на .c. (К сожалению, нельзя еще трансформировать в .c~; однако, это может стать возможно в будущем). Заметим также, что запрещается правило .c.a:, создающее каждый об ектный файл один за другим. Эта конструкция значительно ускоряет обновление библиотек, но становится весьма громоздкой, если библиотека содержит как программы на C, так и на ассемблере.

ФАЙЛЫ

[Mm]akefile и s.[Mm]akefile /bin/sh

СМ. ТАКЖЕ

.

, , , , в Справочнике пользователя.

СЮРПРИЗЫ

Некоторые команды возвращают ненулевой код завершения и после успешной работы; для преодоления этой трудности используйте опцию -i.

Не допускаются файлы с символами =:@ в имени.

Команды, непосредственно выполняемые shell'ом, например , нельзя продолжать на новую строку.

Если после слова include находится больше одного пробела, то make не сможет прочитать включаемый файл.

Макрос $(a:.o=.c~) не работает. Именованные фильтры поддерживаются плохо.

Выражение $(LIB)(file1.o file2.o) синтаксически неверно. Нельзя построить lib(file.o) из file.o.

В текущей версии не распознается опция -u.

В текущей версии целевой файл не удаляется, если произошла ошибка. Специальное имя .PRECIOUS не работает.

Специальное имя .DEFAULT не работает.

Макросы $(@D), $(*D), $(<D) и $(%D) не вполне правильно работают с подстановкой: подстановка производится не в имя каталога, а в имя файла.









MAKEKEY(1)


НАЗВАНИЕ

makekey - генерация ключей шифровки

СИНТАКСИС

/usr/lib/makekey

ОПИСАНИЕ

Команда makekey улучшает схемы шифрования, использующие ключи, путем увеличения времени, необходимого для поиска в пространстве ключей. Она читает 10 байт со стандартного ввода и записывает 13 байт на стандартный вывод. Результат получается из исходных данных путем довольно сложных вычислений, на которые требуется заметная доля секунды.

Первые восемь входных байт (входной ключ) могут быть произвольными ASCII-символами. Последние два байта (соль) лучше всего выбрать из множества цифр, знаков . и /, а также больших и малых букв. Символы соли повторяются в качестве первых двух символов на выходе. Остальные 11 выходных символов выбираются из того же множества, что и соль, и образуют выходной ключ.

Преобразование выполняется по существу следующим образом: соль используется для выбора одной из 4096 шифровальных машин; все они основываются на алгоритме Национального Бюро Стандартов DES, но действуют 4096 различными способами. В качестве ключа используется входной ключ; константная цепочка символов подается в машину и обрабатывается несколько раз. 64 выходных бита распределяются в результате среди 66 бит выходного ключа.

Команда makekey предназначена для программ, которые выполняют шифрование. Обычно и ввод, и вывод команды выполняются через каналы.

СМ. ТАКЖЕ

, . , в Справочнике программиста.



MAKEKEY(7)XENIX System V (1 янвapя 1989)


НАЗВАНИЕ

makekey - ключ шифpoвaния

СИНТАКСИС

/usr/lib/makekey

ОПИСАНИЕ

Makekey читaeт 10 бaйт из cтaндapтнoгo ввoды и пeчaтaeт 13 бaйт в cтaндapтный вывoд. Зaвиcимocть вывoдa oт ввoдa тpyднo вычиcлимa (т.e., тpeбyютcя знaчитeльныe дoли ceкyнды).

Пepвыe 8 ввoдимыx бaйт (ключ ввoдa) мoгyт быть любыми cимвoлaми ASCII. 2 пocлeдниx бaйтa (лoвyшкa) выбиpaютcя из cлeдyющeгo нaбopa: цифpы, cимвoлы `.' и `/', бyквы вepнeгo и нижнeгo peгиcтpoв. Cимвoлы "лoвyшкa" пoвтopяютcя кaк пepвыe двa cимвoлa вывoдa. Ocтaвшиecя 11 cимвoлoв вывoдa выбиpaютcя из тoгo жe нaбopa, чтo и "лoвyшкa" и oбpaзyют ключ вывoдa.

Bыпoлняeмoe пpeoбpaзoвaниe зaключaeтcя в cлeдyющeм: "лoвyшкa" иcпoльзyeтcя для выбopa oднoй из 4.096 кpиптoгpaфичecкиx мaшин, вce oни бaзиpyютcя нa aлгopитмe National Bureau of Standart DES, oднaкo пpepывaютcя 4.096 paзличными пyтями. Kлюч ввoдa иcпoльзyeтcя кaк ключ шифpoвaния. 64 битa в peзyльтaтe пpeoбpaзyютcя в 66 бит (ключ вывoдa).

СМ. ТАКЖЕ



MAKEKEY(8)


НАЗВАНИЕ

makekey - генерирует ключ шифровки.

СИНТАКСИС

/etc/lib/makekey

ОПИСАНИЕ

makekey усиливает эффективность шифровальных схем, увеличивая время, требуемое для поиска ключа. Она читает 10 байтов со стандартного ввода и выдает 13 байтов на стандартный вывод. Выходная информация зависит от входной таким образом, чтобы эту зависимость было трудно угадать (т.е. уловить существенную часть секунды).

Первые 8 входных байтов (ключ входа) могут быть произвольными символами ASCII. Последние 2 байта ввода (salt - "соль") наилучшим образом выбранные из набора цифр, прописных и строчных букв, точки и косой черты (/) символы. Символы "соли" идут первыми двумя символами на выход. Оставшиеся 11 выходных символов выбираются из того же набора, что и "соль", и составляют ключ вывода.

Выполняемое преобразование по сути заключается в следующем: "соль" используется для выбора одной из 4096 шифровальных последовательностей, базирующихся на алгоритме DES Национального Бюро Стандартов, разбитого на 4096 ответвлений. Используя ключ ввода в качестве ключа, фиксированная строка заводится в машину и циркулирует там. 64 выходных бита преобразуются в результате в 66 битов ключа вывода.

СМ. ТАКЖЕ

passwd(3)



MALLOC(3X)


НАЗВАНИЕ

malloc, free, realloc, calloc, mallopt, mallinfo - быстрое выделение оперативной памяти

СИНТАКСИС

#include <malloc.h>

char *malloc (size) unsigned size;

void free (ptr) char *ptr;

char *realloc (ptr, size) char *ptr; unsigned size;

char *calloc (nelem, elsize) unsigned nelem, elsize;

int mallopt (cmd, value) int cmd, value;

struct mallinfo mallinfo ( )

ОПИСАНИЕ

Функции malloc и free предоставляют простой универсальный механизм выделения и освобождения памяти, работающий значительно быстрее пакета . Описываемые функции находятся в библиотеке malloc и подключаются при использовании опции -lmalloc команд и .

Функция malloc возвращает указатель на блок размером не менее size байт, который можно использовать в произвольных целях.

Аргументом функции free является указатель на блок, предварительно выделенный с помощью malloc; после выполнения free блок может быть выделен вновь, а хранящаяся в нем информация теряется (см. однако описание функции mallopt, команда M_KEEP).

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

Функция realloc изменяет размер блока, на который указывает ptr, до размера size и возвращает указатель на возможно смещенный блок. Часть содержимого блока до наименьшего из нового и старого размеров не изменяется.

Функция calloc выделяет пространство для массива из nelem элементов, каждый размером elsize байт, и заполняет массив нулями.

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

M_MXFAST

Установить величину maxfast равной аргументу value. Алгоритм отводит место сразу для большой группы блоков, размер которых не превосходит maxfast, а затем по запросам очень быстро выдает их. Подразумеваемое значение maxfast равно 24. M_NLBLKS

Установить величину numblks равной аргументу value. Каждая из вышеупомянутых "больших групп" содержит numblks блоков. Число блоков должно быть больше 0; подразумеваемое значение numblks равно 100. M_GRAIN

Установить величину grain равной аргументу value. Размеры всех блоков, не превосходящие maxfast, округляются вверх до ближайшего кратного grain. Значение grain должно быть больше 0; подразумеваемое значение таково, чтобы обеспечить правильное выравнивание по границе данных любого типа. При изменении grain аргумент value округляется вверх до ближайшего кратного значения по умолчанию. M_KEEP

Сохранить данные в освобождаемом блоке до следующих вызовов функций malloc, realloc или calloc. Эта опция предоставлена только для совместимости со старой версией malloc; пользоваться ей не рекомендуется. <



MAPCHAN(5)XENIX System V (1 янвapя 1989)


НАЗВАНИЕ

mapchan - Фopмaт фaйлa пpeoбpaзoвaния cимвoлoв тepминaлa

ОПИСАНИЕ

mapchan oпpeдeляeт пpeoбpaзoвaниe вxoднoй и выxoднoй инфopмaции в XENIX.

Kaждaя кapтa тpeбyeт 1024 бaйт (бyфep eмкocтью 1 Kбaйт) для paзмeщeния вxoдныx и выxoдныx cимвoлoв.

Oднa и тa жe кapтa пpeoбpaзoвaния мoжeт иcпoльззoвaтьcя нecкoлькими тepминaлaми (мeтoд paздeлeнныx кapт).Kaждaя yникaльнaя кapтa пpeoбpaзoвaний зaгpyжaeтcя в coбcтвeнный бyфep. Maкcимaльнoe кoличecтвo бyфepoв кapт, дocтyпнoe cиcтeмe зaдaeтcя ядpoм (cмoтpи и ). Бyфep ocвoбoждaeтcя, ecли кapтa, зaгpyжeннaя в нeгo, бoльшe нe иcпoльзyeтcя ни oдним тepминaлoм.

ПPИМEP ФAЙЛA КAPТЫ

Bнyтpeнний нaбop cимвoлoв, иcпoльзyeмый XENIX oпpeдeлeн в пpaвoй кoлoнкe вxoднoй кapты и пepвoй кoлoнкe выxoднoй кapты кaждoй cтpoки, зaдaющeй пpeoбpaзoвaниe. Пo yмoлчaнию, этo 8-битный ASCII-кoд, извecтный тaкжe кaк dpANS X3.4.2 или ISO/TC97/SC2 или ISO 8859 Level 1. Oн coдepжит лaтинcкий aлфaвит и мoжeт иcпoльзoвaтьcя для бoльшинcтвa eвpoпeйcкиx языкoв.

Любoй нeзaдaнный cимвoл пepeдaeтcя нeпocpeдcтвeннo, в фaйлe mapfile yкaзывaютcя тoлькo cимвoлы, для кoтopыx нeoбxoдимa зaмeнa. Cимвoл в кoлoнкe cлeвa дoлжeн пoявлятьcя тoлькo oдин paз. Haличиe бoлee чeм oднoгo coбытия для любoгo из вxoдoв являeтcя oшибкoй. Cимвoлы пpaвoй кoлoнки мoгyт пoявлятьcя бoлee чeм oдин paз. Этo oтoбpaжeниe типa "мнoгиe к oднoмy". Hyли мoгyт быть пoлyчeны c пoмoщью пocлeдoвaтeльнocтeй "dead" или "compose" или кaк чacть выxoднoй cтpoки.

He peкoмeндyeтcя иcпoльзoвaть кaнaл oтoбpaжeния пpи coздaнии или мoдификaции фaйлa oтoбpaжeния. Этo пpeдoтвpaтит пyтaницy. Taкжe peкoмeндyeтcя в бoльшинcтвe cлyчaeв иcпoльзoвaть чиcлoвыe пpeдcтaвлeния cимвoлoв. Иcпoльзyйтe кoмeнтapии для oпpeдeлeния пpeдcтaвлeния cимвoлoв. Пoльзyйтecь дoкyмeнтoм, coдepжaщим oпиcaниe ASCII кoдoв и aппapaтнoгo oбecпeчeния.

# # Cимвoлы '~', '$' и '#' являютcя cимвoлaми # кoмeнтapиeв в тoм cлyчae, ecли oни нe # зaключeны в кaвычки # # "beep", "input", "output", "dead" and "compose" # являютcя ключeвыми cлoвaми и иcпoльзyютcя кaк # пoкaзaнo нижe


beep # дaть звoнoк, кoгдa имeeт мecтo oшибкa

input a b c d

dead p q r # q, cлeдoвaвшee зa p, вoзвpaщaeт r s t # s, cлeвoвaвшee зa p, вoзвpaщaeт t.

dead u v w # v, cлeдoвaвшee зa u, вoзвpaщaeт w.

compose x # x являeтcя клaвишeй compose (тoлькo oдин paз). y z A # y и z, cлeдoвaвшиe зa x, вoзвpaщaют A. B C D # B и C, cлeдoвaвшиe зa x, вoзвpaщaют D.

output e f # e пpeoбpaзyeтcя в f. g h i j # g пpeoбpaзyeтcя в hij - oдин из ниx. k l m n o # k пpeoбpaзyeтcя в lmno.

Bce oдинoчныe cимвoлы мoгyт быть пpeдcтaвлeны в oднoм из фopмaтoв

56 # дecятичнoм 045 # вocьмepичнoм 0xfa # шecтнaдцaтиpичнoм 'b' # фикcиpoвaнный cимвoл ' 76' # фикcиpoвaнный вocьмepичный кoд '' # фикcиpoвaнный шecтнaдцaтиpичный кoд

Bce пepecчиcлeнныe вышe фopмaты пpeoбpaзyютcя в пpocтыe бaйтoвыe вeличины.

ДИAГНOCТИКA

Oшибкa фикcиpyeтcя в cлyчae кoгдa в mapfile:

Бoлee чeм oднa клaвишa compose. Cимвoлы зaмeщaютcя бoлee чeм oдин paз. Cинтaкcичecкиe oшибки в бaйтoвыx вeличинax. Пpoпyщeны cлoвa input или output Kлaвиши dead или compose имeют мecтo в paздeлe input. Лишняя инфopмaция в cтpoкe. Зaмeщeниe cимвoлa нa нyль.

Cимвoлы oтoбpaжaютcя кaк 7-битныe вeличины вмecтo 8-битныx. Иcпoльзyйтe stty -a чтoбы yбeдитьcя, чтo -istrip ycтaнoвлeн. Убeдитecь, чтo нaбop вxoдныx cимвoлoв пpeoбpaзyeтcя для ycтpoйcтвa 8859, нaбop выxoдныx cимвoлoв пpeoбpaзyeтcя из 8859 в нaбop cимвoлoв, пoнимaeмый диcплeeм, пocлeдoвaтeльнocть dead и compose имeeтcя вo вxoднoм нaбope и дoлжнa пepeдaвaтьcя чepeз 8859.

ФАЙЛЫ

/etc/default/mapehan /usr/lib/mapehan/map.stdrom /usr/lib/machn/map.*

СМ. ТАКЖЕ

, keyboard(HW), , , , makey(5), parallel(HW), scree(HW), serial(HW), setkey(5),

ЗАМЕЧАНИЯ

Heкoтopыe инocтpaнныe клaвиaтypы и диcплeи нe coдepжaт cимвoлoв, иcпoльзyeмыx кoмaндaми shell XENIX и языкoм пpoгpaммиpoвaния C. He пытaйтecь иcпoльзoвaть тaкoe ycтpoйcтвo для зaдaч aдмиcтиpoвaния cиcтeмы.

Taк кaк нe вce тepминaлы и пeчaтaющиe ycтpoйcтвa мoгyт oтoбpaжaть вce cимвoлы, иcпoльзyeмыe этoй yтилитoй. Инфopмaця o тoм, кaкиe cимвoлы мoжeт oтoбpaжaть ycтpoйcтвo cмoтpитe в дoкyмeнтaции нa этo ycтpoйcтвo.

ПPEДУПPEЖДEHИE



Иcпoльзoвaниe фaйлoв пpeoбpaзoвaния , oпpeдeляющиx нecкoлькo "внyтpeнниx" нaбopoв cимвoлoв, или нaбopoв cимвoлoв, oтличныx oт 8-битнoгo ASCII нaбopa, пpинимaeмoгo пo yмoлчaнию, мoжeт пpивecти к cтpaнным пocлeдcтвиям. Этo ocoбeннo вaжнo для 7-битнoй чacти ASCII кoдa (cмoтpи ). Утилиты и пpиклaдныe пpoгpaммы XENIX paбoтaют имeннo c этими вeличинaми. Tpaнcпopтиpoвaниe мeждy мaшинaми c paзличными нaбopaми внyтpeнниx кoдoв мoжeт нe пoлyчитьcя, тaк кaк пpeoбpaзoвaниe нe выпoлняeтcя нa блoчнoм ycтpoйcтвe, тaкoм кaк мaгнитнaя лeнтa или гибкий диcк. Mapchan мoжeт быть иcпoльзoвaн для "пepeвoдa" из oднoгo внyтpeннeгo нaбopa cимвoлoв в дpyгoй.

He ycтaнaвливaйтe ISTRIP (stty(1)) нa тepминaльнoй линии, кoтopaя имeeт пpeoбpaзoвaниe, включaющee 8-битныe cимвoлы.









MAPCHAN(7)


НАЗВАНИЕ

mapchan - Конфигурирует при отображении tty устройства.

СИНТАКСИС

mapchan [-ans][-f mapfile][channels...] mapchan [[-o][-d]][channel]

ОПИСАНИЕ

mapchan конфигурирует при отображении информации ввода и вывода XENIX. Утилита mapchan предназначена для пользователей устройств, которые используют языки, отличные от английского (наборы символов, отличных от 7-байтовых ASCII).

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

mapchan имеет ряд применений: отобразить channel (-a или -s); не отображать channel (-n и произвольно-а); или выводить таблицу отображения на канал (не обязательно -o, -d, channels).

При отсутствии параметров mapchan выводит таблицу на пользовательский channel. Выведенная таблица подходит в качестве ввода для mapchan.

Параметры таковы:

-аесли других параметров нет, устанавливает все channels, даваемые в файле по умолчанию (/etc/default/mapchan) с определенной таблицей. Когда используется с -n, он ссылается на все channels, даваемые в файле по умолчанию. Суперпользователь выводит или не выводит все channels, другие пользователи выводят только собственные channels. -a не может использоваться с -d, -o или -s. -dвыводит таблицу отображения, которая находится в употреблении, на заданное устройство, channel, с тем чтобы вывести ее в десятичном виде вместо шестнадцатиричного по умолчанию. Версия ASCII выводится стандартным выводом. Этот вывод подходит в качестве входного файла mapchan для другого channel. Выводятся отображенные значения. Идентичные пары не являются выводом. -d нельзя использовать с -a, -f, -n, -o или -s. -fвызывает отображение текущего channel или списка channels c mapfile. -f нельзя использовать с -d, -n, -s или -о. -nосуществляется нулевое отображение. Все коды являются вводными и выводными, такими как они и получены. Отображение выключается для пользовательского channel или для других channels, если таковые заданы. Если -а используется с -n отображение отключается на всех channels, даваемых по умолчанию. Отображение по умолчанию для всех channels, если не задана другая конфигурация. -n не может использоваться с -d, -f, -o или -s. -dвыводит таблицу отображения, которая находится в употреблении, на заданное устройство, channel, с тем чтобы вывести ее в восьмеричном виде вместо шестнадцатиричного по умолчанию. Версия ASCII выводится стандартным выводом. Этот вывод подходит в качестве входного файла для другого порта. Выводятся отображенные значения. Идентичные пары не являются выводом. -d нельзя использовать с -a, -d, -f, -n или -s. -sустанавливает текущий channel пользователя с заданным mapfile в файл по умолчанию. -s не может быть использована ни с каким другим параметром.

<


/p>

Пользователь должен владеть channel, чтобы отображать его. Суперпользователь может отображать любой channel. Чтобы отобразить на channel, требуется разрешение на считывание или запись.

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

Как правило, mapchan вызывается в файле /etc/rc. Этот файл выполняется, когда система входит в мультипользовательский режим и устанавливает по умолчанию отображение для системы. Пользователи могут вызывать mapchan, когда они начинают работу включением управляющей строки mapchan в своих файлах .profile или .login. Кроме того, пользователь может повторно отобразить свой channel в любой момент с помщью вызова mapchan из управляющей строки. channels, не распечатанные в файле по умолчанию, не отображаются автоматически. При выходе channels не изменяются. Какие бы отображения не имелись для последнего пользователя, они остаются действительными для следующего пользователя, если только те не меняли свои .profile или .login.

Например, файл по умолчанию /etc/default/mapchan может содержать:

tty02 ibm tty1a tty2a wy60.ger lp ibm

Каталог по умолчанию, содержащий mapfiles, - /usr/lib/mapchan. Каталог по умолчанию, содержащий файлы channel, - /dev. Полные составные имена могут использоваться для channels или mapfiles. Если channel не имеет входа, или входное имя - пустое, нет возможности отображать на такой channel. Дополнительные channels, добавляемые к системе (например, добавление последовательного или параллельного порта), не вводится автоматически в файл по умолчанию mapchan. Если требуется ограничение, системный администратор должен осуществить ввод.

Формат mapfiles документируется в ручной странице mapchan (3).

Использование отображенного канала

Входная информация представляется 7- или 8-битовыми кодами, посылаемыми переферийным устройством. Устройство может использовать "мертвые" или "составные" ключи для выработки кодов. Если устройство не имеет мертвых или составных ключей, эти ключи могут воспроизводиться mapchan.



Символы, отображенные один к одному, выводятся, когда нажимается клавиша, и отображенные значения передаются в ядро.

Некоторые ключи обозначаются как мертвые в mapfile. Последовательности мертвых ключей - два набора ключей, которые производят одно отображенное значение, передаваемое в ядро. Мертвый ключ, как правило, представляет собой диакритический символ, а второй ключ представляет собой изменяющуюся букву. Например, последовательность 'e может отображаться значением 0хЕ9, и выводиться как е.

Один ключ обозначается как сложный ключ в mapfile. Последовательности составных ключей состоят из трех наборов ключей, которые вырабатывают одно отображенное значение, передаваемое в ядро. Составной ключ, как правило, представляет собой редко используемый символ или комбинацию ctrl-letter. Второй ключ, как правило, является изменненой буквой. Третий ключ может быть другим объединяемым символом или диакритическим символом. Например, если '@' - составной ключ, последовательность @ c O может отображаться ASCII значением 0хА9 и выводиться как

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

Следующие условия вызовут ошибку при вводе:

нераспознанная (неопределенная в mapfile) мертвая или составная последовательность, повторно запускающая составную последовательность до окончания, с помощью нажатия составного ключа в середине последовательности. Это ошибка, но инициируется новая составная последовательность.

Если mapfile содержит ключевое слово beep, при любом перечисленном выше условии звенит звонок. В любом случае символы не выводятся на экран и не передаются в ядро.

Чтобы последовательности символов осуществляли управление терминалом (двигали курсор и т.д.), а не печатали символы на экране, mapchan допускает, чтобы последовательности символов, определялись как особые последовательности, не передаваемые через обычные процедуры отображения. Могут быть определены два раздела, один для входного - клавиатурного, а другой для выходного - экранного представлений.

Наборы символов



Внутренний набор символов, использующийся в XENIX, определяется используемым mapfiles. По умолчанию - это набор символов ISO 8859/1, который также известен как dpANS Х3.4.2 и ISO?TC97/SC2. Он поддерживает большую часть латинского алфавита и может представлять большинство европейских языков.

Ряд частичных файлов отображения обеспечивается в качестве примеров. Они должны быть изменены для использования с особыми переферийными устройствами. Посмотрите в руководстве вашей аппаратурой, какие коды нужны для вывода желаемых символов. Два поля отображений предоставляются для использования с устройства управления: /usr/lib/mapchan/ibm для системы со стандартным для РС набором символов ROM и /usr/lib/mapchan/iso для систем с необязательным ISO 8859/1набором символов ROM.

Надо заботиться о том, что присваивания правильны для 8-битовых терминалов. /etc/gettydefs файл может требовать модификации, допускающей вводы с правильными присваиваниями.

7-битовый U.S.ASCII (ANSI X3.4) следует применять, если нет возможности отобразить на 2 channel.

ФАЙЛЫ

/etc/default/mapchan /usr/lib/mapchan/*

СМ. ТАКЖЕ

asccii(7), keyboard(HW), , ipadmin(8), mapchan(3), , parallel(HW), screen(HW), serial(HW), setkey(7), ,

ПРИМЕЧАНИЯ

Некоторые клавиатуры, несовместимые с выпускаемыми в Соединенных Штатах, и дисплеи не содержат символов, используемых широко в интерпретаторе shell команд XENIX и программного языка Си. Не рекомендуется использовать эти устройства для заданий системного администратора.

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

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

ПРЕДУПРЕЖДЕНИЕ



Использование mapfiles, который определяет набор символов на канал или набор, отличный от 8-битового ISO 8859, поставляемого по умолчанию, может оказывать странное влияние. Особенно важно сохранить 7-битовую ASCII часть набора символов (смотри ). Утилиты XENIX и много применений присваивают себе эти значения.

Средства, передаваемые между компьютерами с различными отображениями наборов внешних кодов, могут не быть переносимыми, как бы ни было представлено отображение на блочном устройстве, таком как лента и дискета. Однако, trchan с соответственным mapfile могут использоваться при "переводе" из одного набора символов в другие.

Не надо устанавливать ISTRIP (смотри ), когда используется mapchan. Этот параметр выкидывает восьмой бит перед тем, как отображение появляется.









MAPKEY(7)


НАЗВАНИЕ

mapkey, mapscrn, mapstr, convkey - Конфигурирует отображение экрана монитора.

ОПИСАНИЕ

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

mapstr работает на поэкранной основе. Отображение строк на одном экране не влияет на какой-либо другой экран.

Если имя файла дано в строке аргумента, из содержимого входного файла конфигурируется соответствующая таблица отображения. Если не дается никакого файла, используются файлы по умолчанию в /usr/lib/keyboard и /usr/lib/console. Параметр -d вызывает считывание таблицы отображения из ядра вместо записанной ранее, и на стандартном выходе появляется отображение версии ASCII. Формат выхода подходит для входных файлов к mapscrn, mapkey или mapstr. Когда задан параметр -d, несуперпользователь может вычислять mapkey и mapstr.

Если заданы параметры -o или -x, mapkey выводит таблицу отображения в восьмиричном или десятиричном виде.

convkey переводит файл mapkey старого типа в текущий формат. Если отсутсвуют in или out, по умолчанию берутся stdin или stdout.

ПРИМЕЧАНИЯ

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

СМ. ТАКЖЕ

keyboard(HW), screen(HW),



MASM(1)XENIX System V (21 июня 1987)


ИМЯ

masm - acceмблep OC XENIX

СИНТАКСИС

masm [options] sourcefile

ОПИСАНИЕ

Masm являeтcя acceмблepoм для OC XENIX 8086/286/386. Oн читaeт и acceмблиpyeт инcтpyкции языкa acceмблepa для пpoцeccopoв 8086/80286/80386 из иcxoднoгo фaйлa sourcefile. Oн coздaeт либo oбъeктный фaйл для кoмпoнoвки c имeнeм sourcefile.o, либo выпoлняeмый фaйл a.out.

Для иcxoдныx фaйлoв peкoмeндyeтcя cyффикc .s, кoтopый, впpoчeм, нe являeтcя oбязaтeльным. Ecли cyффикc нe зaдaн, acceмблep выдaeт пpeдyпpeждeниe и пpoдoлжaeт paбoтy.

Cyщecтвyют cлeдyющиe флaги:

-a Пepeд вывoдoм в oбъeктный фaйл ceгмeнты yпopядoчивaютcя в aлфaвитнoм пopядкe. -c Cпиcoк пepeкpecтныx ccылoк вывoдитcя в фaйл filename.crf. -C Пocтpoeниe cпиcкa пepeкpecтныx ccылoк для нaбopa фaйлoв. Cпиcoк пoмeщaeтcя в фaйлы c имeнaми, coвпaдaющими c иcxoдными и cyффикcoм -d K лиcтингy в фaйлe filename.lst дoбaвляeтcя лиcтинг пepвoгo пpoxoдa. -Dsym Oпpeдeляeт cимвoл кaк пycтoй мaкpoc TEXTMACRO. -e Гeнepaция кoдa для эмyляции coпpoцeccopoв 8087, 287. Пpoгpaммы, пocтpoeнныe c эти флaгoм, дoлжны кoмпoнoвaтьcя c cooтвeтcтвyющeй мaтeмaтичecкoй библиoтeкoй. -Ipath Oпpeдeляeт пyть для пoиcкa мaкpoфaйлoв. Дoпycкaeтcя oднoвpeмeннoe yкaзaниe дo 10 пyтeй. -l[listfile] Coздaeт фaйл c лиcтингoм. Имя фaйлa - либo имя иcxoднoгo фaйлa, либo listfile c cyффикcoм .lst. B фaйл пoмeщaeтcя иcxoдный тeкcт, cгeнepиpoвaнный кoд и cooбщeния oб oшибкax acceмблиpoвaния. Ecли имя фaйлa ecть `-', лиcтинг пoмeщaeтcя в cтaндapтный вывoд. -Mx Пpи вывoдe внeшниx и oбщиx имeн в oбъeктный фaйл coxpaнять peгиcтp бyкв. Bo вcex ocтaльныx cлyчaяx cтpoчныe бyквы пepeвoдятcя в пpoпиcныe. -Mu Пpoпиcныe и cтpoчныe бyквы нe paзличaютcя. -Ml He измeнять peгиcтp бyкв. -n Bыдaвaть инфopмaцию oб имeнax в acceмблиpyeмoй пpoгpaммe. Для этoгo нeoбxoдимo yкaзывaть флaг -l. -o______ Acceмблиpoвaнныe инcтpyкции в вocьмepичнoм видe пoмeщaютcя в фaйл obfile. Этoт фaйл выпoлним тoлькo в cлyчae oтcyтcтвия oшибoк пpи acceмблиpoвaнии. Этoт флaг пepeoпpeдeляeт имя oбъeктнoгo фaйлa пo yмoлчaнию. -O______ Acceмблиpoвaнныe инcтpyкции в двoичнoм видe пoмeщaютcя в фaйл obfile. -r Гeнepиpyeт кoд для coпpoцeccopoв 8087/287. -v Bывoд пoдpoбнoй cтaтиcтики выпoлнeния. B пpoтивнoм cлyчae вывoдятcя тoлькo cooбщeния oб oшибкax. -x B дoпoлнeниe к cooбщeниям, пoмeщaeмым в фaйл лиcтингa, вывoдить в cтaндapтный вывoд диaгнocтики cooбщeния oб oшибкax. -X Пoмeщaть в фaйл лиcтингa вce oпepaтopы, cocтaвляющиe тeлo ycлoвнoй диpeктивы IF, чeй apгyмeнт дaeт лoжнoe знaчeниe.


ФАЙЛЫ

/bin/masm

СМ. ТАКЖЕ

a.out(3), ,

ЗАМЕЧАНИЯ

Пo yмoлчaнию иcпoльзyютcя флaги -Ml и -e, включaющиe pacпoзнaвaниe peгиcтpa бyкв и эмyляцию пpoцeccopa c плaвaющeй тoчкoй.

BOЗВPAЩAEМЫE ЗНAЧEНИЯ

Boзвpaщaeмыe знaчeния имeют cлeдyющий cмыcл:

0 Oшибoк нeт 1 Oшибкa в apгyмeнтax 2 Oшибкa пpи oткpытии вxoднoгo фaйлa 3 Oшибкa пpи oткpытии фaйлa лиcтингa 4 Oшибкa пpи oткpытии oбъeктнoгo фaйлa. 5 Oшибкa пpи oткpытии фaйлa пepeкpecтныx ccылoк. 6 Oшибкa пpи oктpытии мaкpoфaйлa. 7 Oшибки acceмблиpoвaния. Пpи нeycтpaнимыx oшибкax oбъeктный фaйл yдaляeтcя. 8 Oшибкa pacпpeдeлeния пaмяти. 9 Этa вepcия нe дoпycкaeт ввoдa дeйcтвитeльныx чиceл.










MASTER(4)


НАЗВАНИЕ

master - основной файл с информацией об устройствах

ОПИСАНИЕ

Файл master используется утилитой для получения информации об устройствах, на основаниии которой генерируются конфигурационные файлы low.s и conf.c. Утилита config читает dfile и помещает информацию из каждого элемента первой части в массивы, заготовленные по основному файлу master. Для получения информации о получаемых файлах см. , а о значении полей в первой части поддерживаемого пользователем файла dfile см. . Файл master состоит из пяти частей, разделенных символом $ в первой колонке. Любая строка, содержащая звездочку в первой колонке или звездочку, перед которой находятся только пробелы и табуляции, считается строкой комментария.

Часть 1 содержит информацию об устройствах; в части 2 задаются дополнительные имена устройств; часть 3 содержит информацию о настраиваемых параметрах. В частях 4 и 5 располагается информация, относящаяся к конфигурации систем только для семейства M68000. Часть 4 (спецификация микропроцессора) должна присутствовать в файле master и не должна присутствовать в файле dfile. Часть 5 содержит строки в точности того же формата, что и специфическая для M68000 часть в .

Ниже описываются пять частей файла master. В качестве примера используется дисковый контроллер.

Первая часть

Часть 1 содержит строки по 10 полей в каждой. Поля разделяются пробелами.

Поле 1 - имя устройства (не более 8 символов).

Поле 2 - размер (десятичный) векторов прерываний; размер есть количество векторов, умноженное на четыре.

Поле 3 - спецификация программ выполнения управляющих действий (более кратко - обработчика) устройства. Для каждого нужного обработчика следует задать соответствующую букву; если обработчик не существует, вместо буквы указывается символ -. Допустимы следующие спецификации:

sСамостоятельные программы открытия и закрытия для блочных и символьных устройств. Так, комбинация букв sO означает, что для диска программа открытия его как блочного устройства будет называться hdbopen, а как символьного - hdcopen. tУстройство имеет структуру терминала. iОбработка (выполнение) инициализации. pОбработка ошибки питания. OОбработка открытия. CОбработка закрытия. RОбработка чтения. WОбработка записи. IОбработка управляющих действий. SДрайвер потока. Других обработчиков у него быть не должно.
/p>

Поле 4 - индикатор типа устройства. Для каждого нужного индикатора следует задать соответствующую букву; если индикатор не существует, вместо буквы указывается символ -. Допустимы следующие спецификации:

vСоздать массив векторов прерывания, например, hd_ivec [ ]. Для каждого вектора, описанного в файле dfile, в массив помещается (шестнадцатеричный) адрес вектора (номер вектора умножается на 4). mСоздать для устройства символьный старший номер и блочный старший номер (например, hd_cmaj и hd_bmaj). lСоздать массив уровней прерываний, например, hd_ilev [ ]; уровни прерывания указаны в четвертом поле, уровень, каждой строки в первой части файла dfile. oРазрешить только одно данное устройство. cНе вставлять счетчик в файл conf.c. iНе вставлять вектор прерываний. RТребуемое устройство. BБлочное устройство. CСимвольное устройство. IУстройство, управляемое прерываниями, не блочное и не символьное. aРазрешить определения одного вектора с многими адресами. Поле 5 - префикс обработчика (не более 4 символов), например hd.

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

Поле 7 - старший номер блочного устройства; символ -, если такового нет.

Поле 8 - старший номер символьного устройства; символ -, если такового нет.

Поле 9 - максимальное количество устройств на контроллер (десятичное); например, 32. Значение необязательного поля число (пятое поле в строках первой части файла dfile) замещает значение, указанное в поле 9 файла master.

Поле 10 - максимальный уровень запроса шины (от 1 до 7); символ -, если такового нет.

Для устройств, которые не управляются прерываниями, размер вектора прерываний (поле 2) должен быть нулевым. Буква v в поле 4 приводит к тому, что записывает вектора прерываний, хотя в первой части программы low.s не окажется присваиваний соответствующим элементам вектора (прерывания в таком случае будут классифицироваться как случайные). Вторая часть



Часть 2 содержит строки, состоящие из двух полей:

Поле 1 - дополнительное имя устройства (не более 8 символов).

Поле 2 - соответствующее основное имя устройства (не более 8 символов; устройство описано в части 1). Третья часть

Часть 3 составляют строки, состоящие из одного или двух полей:

Поле 1 - имя параметра (не более 30 символов).

Поле 2 - подразумеваемое значение параметра (не более 30 символов; если это поле пустое, то предполагается, что параметр определяется в файле dfile). Четвертая часть

Часть 4 содержит одну строку, состоящую из 2 полей и содержащую спецификацию микропроцессора.

Поле 1 записывается как mpu.

Поле 2 - одно из чисел: 68000, 68010, 68020 или 68030. Пятая часть

Часть 5 содержит специфическую для M68000 информацию, имеющую в точности тот же формат, что и специфическая для M68000 часть в файле dfile. Смысл этой информации описан в .

ФАЙЛЫ

/usr/src/uts/dfile /usr/src/uts/master /usr/src/uts/low.s /usr/src/uts/conf.c /usr/include/sys/conf.h

СМ. ТАКЖЕ

.

в Справочнике администратора.









MATH(5)


НАЗВАНИЕ

math - математические функции и константы

СИНТАКСИС

#include <math.h>

ОПИСАНИЕ

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

Файл содержит также описание структуры и констант, используемых в механизме обработки ошибок [matherr(3M)], включая константу, значение которой возвращается при ошибке:

HUGE Максимальное вещественное число одинарной точности.

Для удобства пользователя определены также следующие математические константы:

M_E Основание натуральных логарифмов (e). M_LOG2E Логарифм числа e по основанию 2. M_LOG10E Логарифм числа e по основанию 10. M_LN2 Натуральный логарифм числа 2. M_LN10 Натуральный логарифм числа 10. M_PI Отношение длины окружности к ее диаметру.

Имеется также несколько дробей от обратного ему значения и квадратного корня из него.

M_SQRT2 Квадратный корень из 2. M_SQRT1_2 Квадратный корень из 1/2.

Определение различных машинно-зависимых "констант" см. в описании включаемого файла <values.h>.

СМ. ТАКЖЕ

, , .



MATHERR(3M)


НАЗВАНИЕ

matherr - функция обработки ошибок

СИНТАКСИС

#include <math.h>

int matherr (x) struct exception *x;

ОПИСАНИЕ

Функция matherr вызывается функциями из математической библиотеки при обнаружении ошибок. Пользователи могут определить собственные процедуры обработки ошибок, включая в свои программы функцию с именем matherr. Функция matherr должна иметь описанный выше вид. При возникновении ошибки указатель x на структуру exception будет передан разработанной пользователем функции matherr. Эта структура, определенная во включаемом фай- ле <math.h>, имеет следующий вид:

struct exception { int type; char *name; double arg1, arg2, retval; };

Элемент type представляет собой целое число, описываю- щее тип случившейся ошибки, из следующего списка конс- тант (определенных во включаемом файле):

DOMAIN Выход за пределы области определения. SING Попадание аргумента в точку сингулярности. OVERFLOW Переполнение. UNDERFLOW Исчезновение порядка. TLOSS Полная потеря значащих цифр. PLOSS Частичная потеря значащих цифр.

Элемент name указывает на цепочку символов, содержащую имя функции, при обращении к которой произошла ошибка. Компоненты arg1 и arg2 содержат значения аргументов при вызове функции. Полю retval присвоено значение, которое будет возвращено функцией по умолчанию, то есть в том случае, если пользовательская функция matherr не прис- воит ей иного значения. Если пользовательская функция matherr возвращает нену- левое значение, то не будет выдаваться сообщение об ошибке и не будет устанавливаться значение переменной errno. Если функция matherr пользователем не предоставлена, то при возникновении ошибки по умолчанию будут вызываться процедуры, описанные вместе с соответствующими матема- тическими функциями. Сведения об этих процедурах об - единены в таблице, приводимой далее. В каждом случае переменной errno присваивается значение EDOM либо ERANGE и выполнение программы продолжается.

ПРИМЕР

#include <math.h>

int matherr (x) register struct exception *x; { switch (x->type) { case DOMAIN: /* Возврат значения sqrt(-arg1) вместо 0 */ if (!strcmp(x->name, "sqrt")) { x->retval=sqrt(-x->arg1); return(0); /* Выдать сообщ., устан. errno */ } case SING: /* Для остальных DOMAIN и SING ошибок: выдать сообщение и прекратить выполнение */ fprintf(stderr,"обл.определения в %s\n",x->name); abort(); case PLOSS: /* Выдать подробное сообщение об ошибке */ fprintf(stderr,"потеря знач.цифр в %s(%g)=%g\n", x->name,x->arg1,x->retval); return(1); /* Больше никаких действий */ } return(0); /* Остальные ошибки - по умолчанию */ }


Подразумеваемые процедуры обработки ошибок

Типы ошибок тип DOMAIN SING OVERFLOW UNDERFLOW TLOSS errno EDOM EDOM ERANGE ERANGE ERANGE BESSEL: - - - - M,0 y0,y1,yn (арг<=0)M,-H---- EXP: - - H 0 - LOG, LOG10: (арг<0) M,-H - - - - (арг=0) - M,-H - - - POW: (отр ** нецел) - - +/-H 0 - (0 ** неполож) M,0 - - - - SQRT: M,0 - - - - GAMMA: - M,H H - - HYPOT: - - H - - SINH: - - +/-H - - COSH: - - H - - SIN, COS, TAN: - - - - M,0 ASIN, ACOS, ATAN2: M,0 - - - -

Сокращения:

* Значение возвращается со всеми неутерянными значащими цифрами M Выдается сообщение (ошибка EDOM) H Возвращается HUGE -H Возвращается -HUGE +/-H Возвращается HUGE или -HUGE 0 Возвращается 0

MATTRIB(1)


ИМЯ

mattrib - изменяет флаги атрибутов файла MSDOS

СИНТАКСИС

mattrib [ -a|+a ] [ -h|+h ] [ -r|+r ] [ -s|+s ] msdosfile [ msdosfiles... ]

ОПИСАНИЕ

Mattrib устанавливает (+) или убирает (-) тот или иной атрибут файла MSDOS.

a Архивный файл. r Только для чтения (нельзя удалять, переименовывать, редактировать файл). s Системный. Используется для индикации того, что файл используется системой. h Скрытый. Невиден при выполнении команды DIR.

СМ. ТАКЖЕ

mtools(1)



MBADBLOCKS(1)


ИМЯ

mbadblocks - проверяет флоппи диск MSDOS и выбраковывает плохие блоки.

СИНТАКСИС

mbadblocks drive:

ОПИСАНИЕ

Mbadblocks проверяет флоппи диск MSDOS на наличие плохих блоков. Все неиспользуемые плохие блоки отмечаются в FAT. Команду полезно применять после использования утилиты mformat.

СМ. ТАКЖЕ

mtools(1)



MCD(1)


ИМЯ

mcd - смена директории MSDOS

СИНТАКСИС

mcd [ msdosdirectory ]

ОПИСАНИЕ

Без аргументов mcd сообщает текущее устройство и рабочую директорию. В остальных случаях mcd сменяет текущую директорию и устройство на указанные в файловой системе MSDOS.

Может быть использована переменная окружения MCWD, содержащая информацию о текущей рабочей директории и устройстве. Эта информация хранится в локальном файле $HOME/.mcwd и игнорируется, если файл создан больше чем 6 часов назад.

В именах директорий MSDOS поддерживаются разделители / и \. Использование разделителя \ в именах директорий отгораживается от ограничений и защиты shell'а.

Mcd возвращает 0 в случае успеха и 1 в случае ошибки

СМ. ТАКЖЕ

ПРИМЕЧАНИЯ

В отличии от версии cd MSDOS, mcd может переходить к другим устройствам.



MCS(1)


НАЗВАНИЕ

mcs - операции с секцией комментариев об ектного файла

СИНТАКСИС

mcs [-a цепочка_символов] [-c] [-d] [-n имя] [-p] об ектный_файл ...

ОПИСАНИЕ

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

Если об ектный_файл является архивом, то он трактуется как набор отдельных об ектных файлов. Например, если задана опция -a, то цепочка_символов добавляется к секции комментариев каждого элемента архива.

Допускаются следующие опции:

-a цепочка_символов

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

-c Сжать содержимое секции комментариев, при этом дублирующиеся элементы удаляются. Порядок оставшихся элементов сохраняется.

-d Удалить из об ектного файла содержимое секции комментариев. Заголовок данной секции также удаляется.

-n имя

Задание имени обрабатываемой секции. По умолчанию команда mcs работает с секцией, называемой .comment. Данную опцию можно применить для указания другой секции.

-p Выдать на стандартный вывод содержимое секции комментариев. Если указано более одного имени, то каждому выводимому элементу предшествует имя файла, из которого он был выделен. Формат сообщения в этом случае таков: имя_файла:цепочка_символов.

ПРИМЕРЫ


Добавить цепочку символов и выдать новое содержимое секции комментариев:

mcs -a цепочка_символов -p об ектный_файл

ФАЙЛЫ

TMPDIR/mcs* Временные файлы. TMPDIR/* Временные файлы.

Обычно каталог TMPDIR - это /usr/tmp, однако данное соглашение можно изменить, присвоив переменной окружения TMPDIR другое значение [см. tempnam( ) в ].

СМ. ТАКЖЕ

.

a.out(4) в Справочнике программиста.

СЮРПРИЗЫ

Команда mcs не может добавить новые секции или удалить существующие из выполняемых об ектных файлов с магическим числом 0413 [см. a.out(4)].



MDEL(1)


ИМЯ

mdel - удаляет файл MSDOS

СИНТАКСИС

mdel [ -v ] msdosfile [ msdosfiles... ]

ОПИСАНИЕ

Mdel удаляет файл в файловой системе MSDOS.

v Режим сообщений. Высвечивает имена файлов во время процесса удаления.

Mdel для проверки правильности удаления сообщает, если файл доступен только по чтению.

СМ. ТАКЖЕ

mtools(1)



MDIR(1)


ИМЯ

СИНТАКСИС

mdir [ -w ] msdosdirectory mdir [ -w ] [ -a ] msdosfile [ msdosfiles... ]

ОПИСАНИЕ

Mdir показывает содержимое директории MSDOS

w Показывает только имена файлов, не показывая их размер, дату создания. a Показывать также и скрытые файлы.

Ошибка возникает, если компонент пути не является директорией.

СМ. ТАКЖЕ

mtools(1)



MEM(7)


НАЗВАНИЕ

mem, kmem - специальные файлы для доступа к памяти

ОПИСАНИЕ

Файл /dev/mem - это специальный файл, который является образом физической памяти компьютера. Он может быть использован, например, для просмотра и даже изменения содержимого физической памяти.

Адреса в файле /dev/mem интерпретируются как адреса в памяти. Обращение к несуществующему адресу приводит к ошибке.

Обращение по адресам, соответствующим регистрам устройств, может привести к неожиданным результатам.

Файл /dev/kmem аналогичен файлу /dev/mem, только имеется в виду не физическая память компьютера, а виртуальная память ядра.

ФАЙЛЫ

/dev/mem /dev/kmem

ПРЕДОСТЕРЕЖЕНИЯ

Некоторые участки файла /dev/kmem нельзя прочитать, поскольку они доступны только на запись или вообще не отображены на физическую память.



MEMORY(3C)


НАЗВАНИЕ

memory: memccpy, memchr, memcmp, memcpy, memset - функции для работы с памятью

СИНТАКСИС

#include <memory.h>

char *memccpy (s1, s2, c, n) char *s1, *s2; int c, n;

char *memchr (s, c, n) char *s; int c, n;

int memcmp (s1, s2, n) char *s1, *s2; int n;

char *memcpy (s1, s2, n) char *s1, *s2; int n;

char *memset (s, c, n) char *s; int c, n;

ОПИСАНИЕ

Данные функции максимально эффективно манипулируют с областями памяти (массивами символов, размер которых определяется счетчиком, а не нулевым байтом в конце). Функции не выполняют проверку переполнения массива-приемника.

Функция memccpy копирует символы из области памяти s2 в s1 до тех пор, пока либо не будет скопировано первое вхождение символа c, либо не будет скопировано n символов. Функция возвращает указатель на следующий после c элемент массива s1 в случае, если c был найден, или пустой указатель (NULL), если c не был найден среди первых n символов s2.

Функция memchr возвращает указатель на первое вхождение символа c в n первых символов области памяти s или пустой указатель, если символ c не встретился.

Функция memcmp сравнивает первые n символов своих аргументов. Функция возвращает целое число, меньшее, равное или большее 0, если s1, соответственно, лексикографически меньше, равно или больше s2.

Функция memcpy копирует n символов из области памяти s2 в s1. Результат функции - s1.

Функция memset заполняет первые n байт области памяти s символами c. Результат функции - s.

Для удобства пользователей все эти функции описаны во включаемом файле <memory.h>.

ОГРАНИЧЕНИЯ

Функция memcmp использует аппаратное сравнение символов. Поэтому результаты сравнения цепочек, содержащих символы со старшим битом, равным единице, машинно-зависимы. В данной системе подобные символы трактуются как отрицательные числа.

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



MERGE(1) КОМАНДЫ ПОЛЬЗОВАТЕЛЯ


НАЗВАНИЕ

merge - объединение изменений, сделанных в двух версиях одного файла в системе отслеживания версий RCS

СИНТАКСИС

merge [флаги] имя-файла1 имя-файла2 имя-файла3

ОПИСАНИЕ

Команда merge совершает с первым файлом те же изменения, которые были сделаны со вторым, чтобы получить третий. Результат записывается в первый файл и в этом единственное отсутствие симметрии между первым и третьим файлами. О деталях см. флаг -j команды co .

Проблемы начинаются, когда изменения относительно второго файла были сделаны в одних и тех же строках первого и третьего файлов. Команда merge выдаст об этом предупреждение в канал выдачи ошибок, и пометит место, которое не могло быть обработано автоматически линиями вида <<<<<<< и >>>>>>>. Типичное сообщение выглядит так:

<<<<<<< имя-файла1 строки первого файла ======= строки третьего файла >>>>>>> имя-файла3

Пользователю предлагается отредактировать результат вручную, как правило удалить лишнее.

ФЛАГИ

-A

Если команда на вашем компьютере поддерживает флаг -A , то сообщения выдаются именно в этом стиле. В итоге, применение изменений ведущих от первой версии ко второй, к рабочему файлу, порождая при этом самую подробную информацию. Утилита diff3 из соответствующего пакета GNU этот флаг поддерживает, поэтому имеет смысл указать при построении RCS на вашем компьютере, что используется именно эта версия утилиты. -E, -e

Эти флаги задают стиль сообщений о наложении изменений, менее подробный, чем -A. См. . По умолчанию используется -E. Флаг -e не порождает никаких предупреждений. -L label

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

merge -L x -L y -L z a b c

generates output that looks like it came from files x, y and z instead of from files a, b and c. -p[rev]

Результат записывается не в рабочий файл, а в стандартный вывод. -q[rev]

Все сообщения подавляются. Используется в фоновом режиме. -V

Посылает номер версии RCS на стандартный вывод.

СООБЩЕНИЯ

Возвращает операционной системе 0 если нет накладок, 1 если есть небольшие проблемы, с которыми программа справляется по ее мнению, и 2 если накладки слишком серьезны для работы.

СМ. ТАКЖЕ

, , , .

Walter F. Tichy, RCS--A System for Version Control, Software--Practice & Experience 15, 7 (July 1985), 637-654.

Copyright (C) Walter F. Tichy, Paul Eggert.

ПРОБЛЕМЫ

Программа работает и с двоичными файлами, но результат работы не всегда осмыслен.



MESG(1)


НАЗВАНИЕ

mesg - разрешение или запрет сообщений

СИНТАКСИС

mesg [n] [y]

ОПИСАНИЕ

Команда mesg с аргументом n, лишая права записи в терминальный файл всех, кроме владельца, запрещает посылать сообщения на терминал пользователя посредством команды . Команда mesg с аргументом y восстанавливает право посылки сообщений. Mesg без аргументов сообщает о состоянии терминала (is y - посылка разрешена, is n - запрещена), не меняя состояние.

ФАЙЛЫ

/dev/tty*

СМ. ТАКЖЕ

.

КОДЫ ЗАВЕРШЕНИЯ

0 Посылка сообщений разрешена. 1 Посылка сообщений запрещена. 2 Зафиксированы ошибки.



MESSAGES(1L)


ИМЯ

messages - быстрый подсчет сообщений в почтовом ящике

СИНТАКСИС

messages messages folder-name

ОПИСАНИЕ

Messages подсчитывает число сообщений в почтовом ящике или в указанной папке.

АВТОР

Elm Development Group

СМ. ТАКЖЕ

, elm(1L)

КОПИРАЙТ

Copyright 1988-1992 by The USENET Community Trust Derived from Elm 2.0, Copyright 1986, 1987 by Dave Taylor



MESSAGES(7)


НАЗВАНИЕ

messages - Описание сообщений системного операторского терминала.

ОПИСАНИЕ

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

label:severity:comment

Внизу объясняются сегменты:

label Имя драйвера или программы, где появилась ошибка. severity Уровень серьезности ошибки, выбираемый из четырех уровней:

PANIC Эти фатальные сообщения указывают на аппаратные проблемы или несогласованности ядра, которые слишком серьезны для продолжения работы. После выдачи сообщения PANIC система останавливается. Требуется перезагрузка. ERROR Затрагивается использование ресурсов. Необходимо некоторое корректирующее действие. WARNING Индикация ошибки, которую следует выдать на дисплей (например, свободное файловое пространство мало), но не требующая немедленного действия. INFO Нуждается в некоторой информации о системе.

comment Поле, содержащее информацию о проблеме управления. action Действия, необходимые в данной ситуации.

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

Значение системных сообщений

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

System inconsistency Противоречивая ситуация в ядре. Abnormal Возможна законная, но экстремальная, ситуация. Hardware Указывает на проблемы оборудования.

System inconsistency сообщения указывают на проблемы, трассируемые при сбое оборудования, такие как провал памяти. Эти сообщения редко появляются c тех пор, как проблемы, связанные с оборудованием, стали обнаруживаться обычно до того, как появится несогласованность.

Abnormal сообщения представляют операционные проблемы ядра, такие как переполнение критической таблицы. Они берут экстремальные ситуации, которые влекут за собой эти проблемы, поэтому им не следует никогда появляться при использовании нормальных систем. Следовательно, в некоторых случаях вы можете изменять параметры ядра, которые вызывают сообщения об ошибках. Использование утилиты configure(1) делает необходимым сообщения.


Hardware сообщения обычно определяют устройство dev, вызвавшее ошибку. Каждое сообщение выдает спецификацию устройства в виде nn/mm, где nn - большее число устройства, а mm - меньшее из двух чисел. Командный конвейер

ls -1 /dev : grep nn : grep mm

может быть использован в списке имен устройства, связанного с данными большим и меньшим числами.

Системные сообщения

**Normal System Shutdown**
Это сообщение появляется, когда система завершает работу надлежащим образом. Оно отмечает, что устройство может быть сразу перезагружено или выключено.

kernel:PANIC:**ABNORMAL System Shutdoun**
Это сообщение появляется, когда во время прекращения работы в системе появляются ошибки. Обычно они выдаются вместе с другими сообщениями. System inconsistency, fatal.

kernel:WARNING:bad block on dev nn/mm
Не найдено ни одного действующего блока или не вставлено в структурном свободном списке. System inconsistency.

kernel:WARNING:bad count on dev nn/mm
Структурная несогласованность в суперблоке файловой системы. Система пытается починится, а за этим сообщением вероятно будет следовать много жалоб об этой файловой системе. System inconsistency.

kernel:WARNING:Bad free count on dev nn/mm
Структурная несогласованность в суперблоке файловой системы. Система пытается починиться, а за этим сообщением вероятно будет следовать много жалоб об этой файловой системе.

kernel:ERROR:error on dev name (nn/mm)
Это вариант, с которого начинается большинство сообщений драйвера. В сообщении будет отмечаться определенный драйвер и жалоба. Name - слово, определяющее устройство.

kernel:ERROR:iadress > 2^24
Это сообщение указывает, что пытались обратиться к числу незаконного блока, которое слишком велико и могло появиться только в файловой системе, превышающей 8 биллионов байтов.Abnormal.

kernel:WARNING:Inode table overflow
Каждый открытый файл требует дескрипторный ввод для того, чтобы быть сохраненным в памяти. Когда таблица переполняется, отказываются от определенного требования (обычно или ). Хотя это не смертельно для системы, это событие может повредить работе различных спулеров, демонов, почтальонов и других важных утилит. Аварийные результаты и отсутствующие поля данных являются общим результом. Использование configure(1) для увеличения числа дескрипторов. Abnormal.

kernel:WARNING:interrupt from unknown device, vec=num
ЦПУ получает прерывание через предположительно не использованный до сих пор вектор. Это сообщение следует за сообщением "panic:unknown interrupt". Как правило, это событие происходит, когда сбой технического обеспечения приводит к неправильному вычислению вектора действительного прерывания. Hardware.

kernel:WARNING:stray interrupt on vector num
ЦПУ получает прерывание от предполжительно неиспользованного вектора. Hardware.

kernel:WARNING:no file
Слишком много входных файлов. У системы кончились входы таблицы "открыть файл". Здесь применяются предупреждения, даваемые для сообщения "inode table overflow". Чтобы увеличить общее число доступных файлов, испльзуйте configure(1). Отметим, что число открытых файлов за сеанс не конфигурируется. Abnormal.

kernel:WARNING:no space on dev nn/mm
Это сообщение означает, что у определенной файловой системы кончились свободные блоки. Системный администратор должен внимательно следить за величиной свободного места на диске и предпринимать шаги, чтобы избежать данной ситуации.

kernel:WARNING:out of inodes on dev nn/mm
В отмеченной файловой системе кончились свободные дискрипторы. Число доступных файловой системе дискрипторов определяется при создании файловой системы ( с помощью ). По умолчанию это число достаточно велико, и это сообщение должно встречаться очень редко. Единственное средство - удалить некоторые незначащие файлы из файловой системы или сбросить всю систему на вспомогательное устройство, вычислить mksf(1) с большим числом определенных дискрипторов и восстановить файлы из резерва. Abnormal.

kernel:WARNING:out of text
Когда программы, подсоединенные с ld -i или -n подключением вычисляются на машине 286 базирования, таблица входов создается так, чтобы в памяти была одна копия чистого текста, даже если есть много копий вычисляемой программы. Это сообщение появляется, когда таблица полна. Система отказывается вычислять программу, которая вызвала переполнение. Отметим, что в этой таблице есть только один вход для каждой отдельной текстовой программы. Множественные копии одной программы не потребуют множественных табличных входов. В этой таблице каждая "липкая" программа (смотри ) требует постоянного входа; "нелипкие" чистые текстовые программы требуют ввод только, когда вычисляется, по крайней мере, одна копия. Используйте для увеличения текстовых сегментов. Abnormal.

kernel:PANIC:bad 287 int
Производилась попытка вычислить команду действительного вида 287 на компьюторе 286 базирования. System inconsistency, fatal.

kernel:PANIC:blkdev
Запрос внутреннего диска ввода/вывода, уже определенный как действительный, ссылается на несуществующий диск. System inconsistency, fatal.

kernel:PANIC:devtab
Запрос внутреннего диска ввода/вывода, уже определенный как действительный, ссылается на несуществующий диск. System inconsistency, fatal.

kernel:PANIC:iinit
Суперблок корневого файла системы не может быть считан. Это сообщение появляется только во время загрузки. Hardware, fatal.

kernel:PANIC:swap IO error
Произошла фатальная ошибка ввода/вывода при чтении или записи области сохранения. System inconsistency, fatal.

kernel:PANIC:memory failure-parity error
Прерывание аппаратной памяти. System inconsistency, fatal.

kernel:PANIC:no fs
Из системной таблицы монтирования исчезла системная запись смонтированного файла. System inconsistency, fatal.

kernel:PANIC:no imt
Система смонтированных файлов исчезла из таблицы монтирования. System inconsistency, fatal.

kernel:PANIC:no procs
Каждый пользователь ограничен в выборе отдельных процессов, которые он может иметь; попытка создать новый процесс, когда нет ни одного в наличии, или когда ограничение пользователя превышено и исчерпано. Это случайное событие не вызывает консольного сообщения; этот сбой происходит, если в ядре удостоверяется, что в наличии свободная запись в таблице процессов, но при попытке обращения к ней она не находится.System inconsistency, fatal.

kernel:PANIC:Out of swap
Не хватает места на диске сохранения для поддержки задачи. Система отказывается создавать задачи, когда она чувствует, что на диске не хватает места, но есть возможность создать ситуации обхода этого механизма. Отметим, что это условие порождает PANIC на машинах 286 и WARNING на машинах 386. Abnormal.

kernel:PANIC:general protection trap
Предпринято общее прерывание защиты в ядре. System inconsistency, fatal.

kernel:PANIC:segment not present
Была сделана попытка доступа в запорченный сегмент. Может быть также указано, что в ядре было предпринято прерывание отсутствия сегмена. System inconsistency, fatal.

kernel:PANIC:Timeout table overflow
Таблица времени ожидания события полна. Драйверами устройств порождаются запросы об истечении времени ожидания событий, как правило, требуется место для одного входа на системную последовательную строку для других использований. Используйте configure(1) для увеличения числа записий в таблицу.

kernel:PANIC:Trap in system
ЦПУ генерирует прерывание нелегальной команды тем, что выполняет ядро или же код драйвера. Этому сообщению предшествует информационный дамп, описывающий прерывание. System inconsistency, fatal.

kernel:PANIC:Invalid TSS
Внутренняя таблица разрушилась.System inconsistency, fatal.

kernel:WARNING:bootstring invalid, ignored
По команде Boot была введена неправильная строка загрузки.

kernel:ERROR:bad syntax-string
По команде Boot была введена неправильная строка загрузки.

kernel:PANIC:bad mapping in copyio
Копирование ввода/вывода было вызвано снеправильным запросом. Обычно из за плохого драйвера.

kernel:WARNING:HARDWARE FAILURE:386 incorrectly multiplies 32-bit numbers
ЦПУ показывает 32-битную ошибку умножения.

kernel:PANIC:***POWER CYCLE TO REBOOT***
Это сообщение появляется вслед за приведенным выше сообщением о 32-битной ошибке HARDWARE FAILURE.

kernel:INFO:10 bits of I/O address decoding
Аппаратура декодирует только 10-битные адреса ввода/вывода. Эта величина в большинстве случаев достаточна. Это условие является существенным, только если нужно связать усройства ввода/вывода с базовым адресом, превышающим 400(в десятичном).

kernel:WARNING:А31 CPU bug workaround not possible for this machine
A31 была определена в строке загрузки, но не может применяться в текущей системе.

kernel:INFO:A31 CPU bug workaround in effect
A31 была определена в строке загрузки, а в настоящее время действует рабочее программное обеспечение.

kernel:PANIC:bad boot string
По запросу Boot была введена неправильная строка загрузки.

kernel:PANIC:**WYSE/SCO XENIX only operates on WYSE PC systems**
Ядро было предназначено только для аппаратуры WYSE, а загружается не на WYSE.

kernel:PANIC:out of both memory & swap
Нет больше свободных страниц памяти или подкачки.

kernel:PANIC:not enough contiguous memory
Программы распределения памяти ядра требуют больше физически непрерывной памяти. Либо уменьшены некоторые параметры ядра (как буферов дисков), либо добавлена физическая память.

kernel:WARNING:filesystem page read failed
Произошла ошибка при попытке чтения страницы с диска. Это не фатальная ошибка, но обычно демонстрирует аппаратные проблемы.

kernel:PANIC:free inode isn't
Запорчена таблица дискрипторов.

kernel:ERROR:Map overflow (num), shutdown and reboote, mp>mpent
Неадекватное отображение внутреннего ядра. Перезагрузите вашу систему.

kernel:PANIC:write_sb():cannot cvts3superb() yet
Это сообщение присутствует только в 386 ядре. Была попытка записи в суперблок системных файлов SYS III и SYS V. Это действие не возможно из за предыдущих проверок.

kernel:WARNING:Can't allocate message buffer
Это сообщение отмечает недостаток памяти. Процессы должны быть прекращены для получения большей памяти. Для увеличения физической памяти существуют другие параметры.

kernel:PANIC:Large model 386 ssig
Ошибка во внутреннем ядре при обработке сигналов большой модели 386.

Trap 2type
Это сообщение предшествует сообщению "kernel:PANIC:". 2type 0 - это номер, выдаваемый процессором при прерывании. За сообщением следует дамп регистр. 2 System inconsistency, fatal.

fpsave:PANIC:no fp_task
Нет никакого контекста плавающей точки для сохранения. Ошибка во внутреннем ядре.

mdep.386/fp.c:WARNING:Nofloating point emulator found in string
/etc/emulator не присутсвует в корневой файловой системе. Системный администратор должен остановить его и перезагрузиться.

fp_OVERRUN:PANIC:coprocessor overrun - with no 287/387
Ошибка внутреннего вспомогательного процессора. fatal.

fp_COPROC:PANIC:coprocessor error - with no 287/387
Несогласованное внутреннее состояние ядра.

fp_COPROC:PANIC:coprocessor error - switched away from fp_task
Неправильное управление внутреннего ядра в процессах с плавающей точкой.

fp_DNA:PANIC:
Произошло прерывание устройства при эмуляции команды с плавающей точкой.

iinit:PANIC:cannot copy in superblock
Произошла ошибка при загрузке суперблока корневой файловой системы.

srmount:PANIC:cannot cvtv7superb()yet
Суперблок корневой файловой системы не был опознан, как суперблок SYS III и SYS V. Суперблоки V7 в настоящий момент в 386 ядре не преобразовываются.

mapphys:PANIC:sptmap overflow
Нет в наличии страниц в системной таблице страниц. Это внутренняя ошибка ядра обычно вызывается неисправным драйвером устройства.

physio:PANIC:bad state
Драйвер устройства сделал неправильный запрос physio.

badint:PANIC:bad interrupt handler
Неправильный запрос прерывания, обычно повинна аппаратура.

setup:PANIC:sptmap overflow
Это сообщение указывает возможную порчу образа ядра, или нехватку физической памяти.

setup:PANIC:u-area not page alieng
Указывает на возможную порчу образа ядра.

setup:PANIC:u-area address does not match SPTADDR
Указывает на возможную порчу образа ядра.

cmn_err:PANIC:DOUBLE PANIC
Происходит зацикливание в ядре. Вы должны перезагрузиться.

cmn_err:PANIC:unknown level in cmn_err (level=num, msg=string)
Программа ядра cmn_err() была вызвана с неправильным аргументом.

Сообщения страничного обмена.



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

mfalloc:PANIC:page not free mfalloc:PANIC:page not free at exit mffree:PANIC:page already free mffree:PANIC:page is locked dfalloc:PANIC:frame not free at exit xlcheck:PANIC:xlink serial mismatch impcode:PANIC:called to load impure 386 impcode:PANIC:more then 1 datd segment? preload:PANIC:,invalid page (num,num) kernel:PANIC:bad page type for protection fault kernel:PANIC:protection fault on read access kernel:PANIC:not present fault on shared data kernel:PANIC:added strange page table - num, index pgfind:PANIC:not in cache pghash:PANIC:not in cache pginval:PANIC:list broken pginval:PANIC:not in cache mftomp:PANIC:bad frameno num mptomf:PANIC:bad mp num swappadd:PANIC: no space for dpfi dftodp:PANIC:bad frameno num dptodf:PANIC:bad dp num pgread:PANIC:no xlink pgfree:PANIC:invalid page marked present pgfree:PANIC:freeing intransit page pgpid:WARNING:setting disk pid kernel:PANIC:page table under page table? kernel:PANIC:swapping intrasit page dftomf:PANIC:non-swap page table entry changed dftomf:PANIC:swap disk frame rcnt(num) ! =1, dp=num,dp->dp_rcnt,dp dftomf:PANIC:page type mismatch-mptype num dptype num mp num dp num, mp->mp_type, dp->dp_type, mp, dp dftomf:PANIC:non-swap page table entry changeddp=num,p>dp_rcnt,dp dftomf2:PANIC:,swap memory frame rcnt(num) != 1, mp=num, dftomf3:PANIC:swap mem frame rcnt(num) !=1,mp->mp_rcnt,mp mftodf1:PANIC:swap mem frame rcnt(num) !=1,mp->mp_rcnt,mp mftodf:PANIC:memory frame marked in transit mftodf:PANIC:page type mismatch - dptype num mptype num dp num mp num mftodf2:PANIC:swap disk frame rcnt(num) != 1, dp=num mftodf3:PANIC:swap disk frame rcnt(num) !=1, dp=num, dp-> dp_rcnt,dp fftomf:PANIC:page type(num) not TE_FILSYS, mp=num,mp->mp_type,mp mfcvt:PANIC:zero ref count ptdup:PANIC:TE_SWAP page rcnt(num)>1, ptdup:PANIC:xlinked page has reference ptdup2:PANIC:TE_SWAP page rcnt>1 ptdup:PANIC:xlinked page has reference ptdup:PANIC:locked page not present ptdup:PANIC:intransit page pgcheck:PANIC:page type mismatch:ptp num type 1 num xtype num, ptp, type, xtype



Выше приводятся сообщения системы, указывающие на системную несогласованность при кодировании страничного обмена в ядре. Эти несогласованности могут быть вызваны аппаратурой или программами. Перезагрузите вашу систему.

cputok:PANIC: cpktou:PANIC: sdfrcm:PANIC:sdp->sd_inode not found

Три ошибки, приведенные выше, указывают на ошибки совместно используемых данных внутри ядра.

v86sighdlint:WARNING:lost signal v86setint:PANIC:xtss pte not present

Эти две ошибки указывают на ошибки управления внутренним файлом в ядре.

Сообщения системного обслуживания

Эти сообщения выдаются, когда выходит из строя системный вызов.

Not owner:
Обычно, эта ошибка говорит о попытке изменить файл некоторым способом, который разрешается только пользователю или суперпользователю. Она выдается также для того, чтобы обычный пользователь мог попытаться выполнять действия, доступные только суперпользователю.

No such file or directjry:
Эта ошибка появляется, когда определено имя файла, и файл должен существовать, но он не найден, или когда один из каталогов в полном имени отсутствует.

No such process:
Не может быть найден процесс, который соответсвенно определяется с помощью pid в kill или ptrace.

Interrupted system call:
Асинхронный сигнал (такой как сигнал прерывания или окончания), выбранный пользователем, появился во время системного вызова. Если выполнение возобновляется после обработки сигнала, он появится только, когда вызов системы прерывания вернет ошибочное условие.

I/O error:
Ошибка некоторого устройства ввода/вывода. Эта ошибка в некоторых случаях может появляться при вызове следующего, действительно применяемого устройства.

No such device or address:
При вводе/выводе специального файла поисходит ссылка на несуществующее устройство. Также это сообщение может появляться, например, магнитофон - не однострочный, или пакет дисков не загружен не драйвере.

Arg list too long:
Список аргументов, превышающий 5,120 байтов,представлен членами cemeйства exec.

Exec format error:
Запрос о выполнении файла, несмотря на соответствующее разрешение, не стартовал с магическим числом (смотри ).

Bad file number:
Какой-либо дескриптор файла ссылается на неоткрытый файл или был сделан запрос о чтении (или записи) файла, открытого только по записи (или чтению).

No child processes:
wait обрабатывается процессом, у которого не было дочерних процессов.

No more processes:
fork вышел из сторя, потому что полна таблица системных процессов, или пользователю не разрешено создавать любые другие процессы.

Not enough space:
Во время выполнения exec или sbrk прорамма запрашивает места больше, чем система может предоставить. Это не временное условие; объем максимального пространства является системным параметром. Ошибка может также появится, если расположение текста, данных и сегментов стека требует слишком много регистров сегментации, или нет достаточной области сохранения во время выполнения fork.

Permission denied:
Была предпринята попытка обращения к файлу способом, запрещенным системой защиты.

Bad address:
Система столкнулась с недостатком аппаратуры при попытке использовать аргумент системного вызова.

Block device requred:
Неблочный файл упоминается там, где требуется блочное устройство, т.е. в mount.

Device busy:
Попытка смонтировать устройство, которое уже смонтировано, или была предпринята попытка демонтировать устройство, на котором существует активный файл (открытый файл, текущий каталог, вмонтированный файл, открытый текстовый сегмент). Также появится это сообщение, если предпринимается попытка разблокирования учета системных ресурсов, когда оно уже выполнено.

File exist:
Существующий файл упоминается в неподходящем контексте, т.е. link.

Cross-device link:
Предпринималась попытка связи файла с другим устройством.

No such device:
Нет определенного каталога, когда он запрашивается, например, в обоих префиксах или как аргумент .

Is a directory:
Попытка записать директорию.

Invalid argument:
Неправильный аргумент (т.е. демонтированный в немонтированном усройстве; упоминающийся как неопределенный сигнал в signal или kill; файл по чтению или по записи, для которого lseek порождает отрицательную ссылку). Также устанавливается математическими функциями, описанными во вступлении (2) данного руководства.

File table overflow:
Заполнена таблица системных файлов, и opens временно не могут больше приниматься.

Too many open files:
Процесс не может иметь больше, чем 60 файловых дескрипторов, открытых на время.

Not a character device



Text file busy:
Попытка выполнить процедуру без побочного эффекта, которая в настоящий момент открыта для записи ( и по чтению). Также была попытка открыть эту программу для записи в момент ее выполнения.

File too large:
Размер файла превышает максимальный размер (1,082,201,088 байтов) или ULIMIT; смотри .

No spase left on device:
Во время работы write в обычном файле не существует свободного места, допустимого на устройстве.

Illegal seek:
lseek была выпущена в программный канал.

Read-only file system:
Предпринималась попытка изменить файл или каталог на устройстве, смонтированном только для чтения.

Too many links:
Попытка превысить максимальное число связей (1000) в файле.

Broken pipe:
Запись на программном канале, для которого не существует процесса считывания дааных. Это условие обычно генерирует сигнал; выдается ошибка, если сигнал игнорируется.

Arg out of domain of func:
Аргумент функции в математическом пакете из домена функции.

Result too large:
Значение функции в математическом пакете не представлено в пределах компьютерной точности.

File system needs cleaning:
Была попытка сделать в систему файлов, чей суперблок не очищен.

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

Not a name file:
creatsem(2), opensem(2), waitsem(2) или sigsem(2) запускаются использованием ошибочного семафорного идентификатора.

Not available:
opensem(2), waitsem(2) или sigsem(2) запускаются семафором, который не был инициализирован с помощью вызова creatsem(2). sigsem запускается семафором из последовательности; например, перед тем, как процесс запускается, соответствующая waitsem на семафоре. nbwaitsem запускается семафором, охраняющим ресурсы, которые в настоящее время используются другими процессами. Семафор, на котором ждал процесс, был в несогласованном состоянии, когда процесс, управляющий семафором, выходит без обработки управляющего свойства; т.е. без выдачи waitsem на семафор.

A name file:
Имя файла (семафор, общие данные и т.п.) было определено, когда оно не ожидалось.

No message of desired type:
Была предпринята ошибка получить сообщение, тип которого отсутствует в очереди сообщений (смотри ).

Identifier removed:
Эта ошибка возвращается к процессу, который возобновляет выполнение вследствие удаления идентификатора из области системного имени файла; смотри , , .

No record locks available:
В установка и удаление захватов записей в файле не может завершаться, так как не существует больше вводов записей, покидающих систему.



Channel number out of range Level 2 not synchronized Level 3 halted Level 3 reset Link number out of range Protokol driver not attached No CSI structure available Level 2 halted

Deadlock situation detected/ avoited
Выявлена и избегается тупиковая ситуация. Эта ошибка принадлежит файлу и блокировке записи.

No record locks available Bad exchange discriptor Bad request discriptor Message tables full Anode table overflow Bad request code Invalid slot File locking deadlock Bad font file format

Not a stream device
Был предпринят ситемный вызов и в файловом дескрипторе, который не является устройством STREAMS.

No data available

Timer expired
Время, установленное для вызова STREAMS , истекло. Причиной ошибки является специфика устройства, и может указывать на неполадки либо аппаратуры, либо программного обеспчения, или, возможно, значение времени истечения события слишком коротко для определенной операции. Статус операции не определен.

Out of stream resources
Во время выполнения STREAMS любая из очередей STREAMS или заголовок STREAMS структур данных не доступны.

Machine is not on the network
Этой ошибкой является спецификация Remote File Sharing (RFS). Она появляется, когда пользователи пытаются объявлять, не объявлять, монтировать или демонтировать дистанционные ресурсы, пока компьютер не начнет выполнять надлежащие действия для того, чтобы соединиться с сетью.

Package not installed
Эта ошибка появляется, когда пользователи пытаются использовать системный вызов из пакета, который не настроен.

Object is remote
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются объявить ресурс, которого нет в локальном компьюторе, или пытаются монтировать/демонтировать устройство (или полное имя), которое находится на удаленном компьюторе.

Link has been severed
Эта ошибка REF спецификации. Она появляется, когда теряется звено (виртуальный канал), подсоединяющее к удаленному компьютеру.

Advertise error
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются объявить ресурс, который уже объявлен , или пытаются остановить RFS, пока ресурсы еще объявляются, или пытаются усилить демонтировку ресурса, когда он еще объявляется.

Srmount error
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются остановить RFS, в то время, как удаленными компьютерами еще монтируются ресурсы.

Communication error on send
Эта ошибка REF спесификации. Она появляется, когда пытаются послать сообщения удаленным компьютерам, а виртуальный канал не может быть найден.

Protocol error
Обнаружена некоторая ошибка в протоколе. Это ошибка спецификации устройства, но, в-основном, она не имеет отношения к неполадкам аппаратуры.

Multihop attempted
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются обратиться к удаленным ресурсам, которые тотчас не доступны.

Not a data message
Во время I_RECVFD системного вызова , или на устройстве STREAMS кто-то встал в начало очереди, которая не может быть обработана. Это что-то зависит от системного вызова:



real(2) - управляющая информация или просматриваемый файловый дескриптор. getmsg(2) - просматриваемый файловый дескриптор. ioctl(2) - информация управления или о данных.

Name not unique on network

File descriptor in bad state

Remote address changed

Cannot access a needed shared library
Попытка выполнить a.out с помощью , требующую общую библиотеку (быть связанной с), а общая библиотека не существует, или пользователю не разрешено использовать ее.

Accessing a corrupted shared library
Попытка выполнить a.out с помощью , требующую общую библиотеку (быть связанной с), и не может загрузить общую библиотеку. Общая библиотека возможно повреждена.

Attempting to link in more shared libraries than system limit
Попытка выполнить a.out с помощью , требующую более общие, чем располагает текущая конфигурация системы, библиотеки (быть подсоединенной к). Смотри System Administrator's Guide.

Cannot exec a shared library directly
Попытка присоединить с помощью тотчас общую библиотеку. Это не позволительно.

Сообщения драйвера

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

Сообщения драйвера операторского терминала

console:WARNING:Kernel messages lost on non-text screen (also check /usr/adm/messages)
Сообщения ядра были потеряны, когда операторский терминал был в графическом режиме и не выходил. Контроль последних строк в /usr/adm/messages для поиска сообщений.

console:WARNING:Too many keyboard groups
Видеоустройств, прикрепленных к системе, больше, чем требуется для поддержания вашего ядра.

Сообщения драйвера IRWIN

IRWIN:ERROR:Tape bad block table was not succesfully read.
Когда открыто лентопротяжное устройство, в памяти cчитывается таблица плохих блоков. Это сообщение указывает, считывание проходит неправильно.

IRWIN:ERROR:Tape is not formatted.
Лента должна форматироваться перед использованием.

IRWIN:ERROR:Tape is write protected.
Маркер защиты записи должен быть снят перед использованием.

IRWIN:ERROR:Cannot write to DC1000 cartidge.
Только дисководы 110 или 210 модели IRWIN могут записывать на кассеты DC1000.

IRWIN:ERROR:Not enough memory for mini-cartige; retrying...
IRWIN ждет достаточной памяти пользователя, для того чтобы стало возможным использование усройства.

IRWIN:ERROR:Not enough memory for mini-cartige; open failed.
IRWIN не получил достаточно памяти для того, чтобы можно было использовать устройство после нескольких вводов.

IRWIN:ERROR:Tape write error.
По неизвестным причинам попытка записи была безуспешной.

IRWIN:ERROR:Tape verify error.
По неизвестным причинам попытка верификации была безуспешной.

IRWIN:ERROR:Tape read error.
По неизвестным причинам попытка чтения была безуспешной.

IRWIN:ERROR:Tape uncorrectable ECC error.
Обнаружилась некорректируемая ошибка памяти в ECC, проверте вашу аппаратуру для неисправных микросхем.

IRWIN:ERROR:Cannot format DC1000 cartige.
Только дисководы 110 или 210 модели IRWIN могут записывать на кассеты DC1000.

IRWIN:ERROR:Bad state: 2num
Неизвестное состояние в программе прерывания.

IRWIN:ERROR:DMA boundary error - start address:num ending address:num
Устройство пытается переслать данные из буфера, который пересекает границу 64k.

Сообщения кассетного драйвера



CT:ERROR:Tape controller (type=name) not found
Не найден контроллер, определенный в файле 2/usr/sys/io/ctconf.asm .

CT:ERROR: Catridge tape is write protected
Перед использованием вы должны удалить маркер защиты записи с кассеты.

CT:ERROR:system too busy for efficient tape use
Не достаточно памяти пользователя, доступной для того, чтобы устройство могло работать.

CT:WARNING:attemped to free invalid buffer
Драйвер пытался освободить незадейственный буфер. Буфер должен быть задействован перед использованием.

Сообщения SCSI драйвера

scsi:ERROR:No controller response :num
Требуемый контроллер не представлен в SCSI канале num. Проверте ваши системные установку и схемы.

scsi:ERROR:CTLR num LUN num not attached
Требуемое устройство не представляет контроллера. Проверте вашу системную установку.

scsi:ERROR:CTLR num LUN num:invalid type <num>,
Требуемое устройство не является диском или лентой. Диск, лента и принтер в настоящее время поддерживаются только SCSI устройствами.

scsi:ERROR:CTLR num LUN num:(device not ready, ctlr, x);
Запрашиваемое устройство занято.

scsi:ERROR:adstrategy:device/type error 0xtype/0xtype
Внутренняя ошибка - открытое устройство - не диск, лента или принтер.

scsi:ERROR:adioctl:ADMODESENSE rc num host num unit num
Команда ioctl sense не завершилась, как ожидалось.

scsi:WARNING:adioctl:ADEXECUTE rc num host num unit num
Команда 2ioctl 0 execute не завершилась, как ожидалось.

scsi:INFO:adioctl:num reassigned
Cкверное отображение блока ioctl завершено (даваемое в парах).

scsi:WARNING:adsetparam:ADMODESENSE rc num host num unit num
Команда mode sense не завершилась, как ожидалось.

scsi:ERROR:adgetcdb:unsupported command num
Внутренняя ошибка - неожиданная команда.

scsi:WARNING:adintr:adapter num SR_DETECTED status=num, intr=num
Сброс SCSI обнаружен.

scsi:WARNING:Unexpected MBI status num
Неожиданное условие после прерывания.

scsi:WARNING:ad_sndcmd:unexpected port status=num
Не в состоянии послать команду адаптеру.

scsi:ERROR:adpresent:Adapter num internal failure:num
Адаптер возвращает сквернщу состояние инициализации.

scsi:ERROR:on disk dev=num/num ha=num id=num lun=num block=num sector=num, cylinder/head=num/num
Сбой диска ввода/вывода.

scsi:ERROR:on tape ha=num id=num lun=num hst num ust num AHA-1540 cmd :num [num...] AHA-1540 sense :num [num...]
Сбой ленты ввода/вывода; отсюда следуют эти сообщения:



end of tape tape is write protected wrong record length

Сообщения драйвера диска

disk:ERROR:Diskinfo table overflow
Слишком много дисков в употреблении - изменить реконфигурацию ядра для увеличения возможного количества дисков.

disk:ERROR:Invalid partition sector on hard disk
Главный нагрузочный блок на диске не распознается. Запустите fsck(2).

Сообщения драйвера гибких диков

floppy:WARNING:CMOS indicates no diskette drives installed
Неправильная конфигурация памяти - прогоните DOS SETUP.

floppy:WARNING:CMOS indicates diskette drive num not present
Неправильная конфигурация памяти - прогоните DOS SETUP.

floppy:ERROR: fdnum being formatted
Используется гибкий диск.

floppy:ERROR:disk is write protected
Чтение с диска невозможно, потому что он защищен.

floppy:ERROR:on dev (num/num), block=num cmd=num status=num
Сбой при вводе/выводе на гибком диске. Перед этим могло быть сообщение:

insert disk or close floppy door

floppy:WARNING:cmd result error
Ошибка ввода/вывода на гибком диске.

Сообщения VPIX

VPIX:command completed unexpectedly
Процесс завершился преждевременно.

Сообщение драйвера OMTI

omti:ERROR:cannot allocate a GDT descriptor
Внутренняя ошибка - неудача подпрограммы ядра dscrallocc.

omti:ERROR:unit=num controller not configured
Внутренняя ошибка - приоткрытие драйвера не удалось идентифицировать тип диска.

omti:WARNING:already busy
Внутренняя ошибка - обращение процедуры старт omti к занятому дисководу.

omti:ERROR:unknown command(num), bp->b_cmd
Внутренняя ошибка - при старте omti встретилась нераспознанная команда.

omti:ERROR:command setup failed
Контроллер не смог принять команду.

omti:WARNING:non-omti interrupt (num), omti_status
Внутренняя ошибка - не предусмотрена команда для обработки сигнала прерывания.

omti:WARNING:unexpected omti interrupt (num), omti_status
Контроллер не послал сигнал прерывания, когда было получено прерывание.

omti:WARNING:still busy
После генерации сигнала прерывания контроллер все еще занят.

omti:ERROR:during omti_sense
Сигнал прерывания получен во время выполнения команды sens OMTI.

omti:ERROR:initialization failure
Во время инициализации обнаружена ошибка.

omti:ERROR:sense command setup failed
Контроллеру не удалось принять команду setup.

omti:ERROR:minor=num, block=num, errtype=num, code=num, unit=num [sector=num, cylinder/head=num/num,]<message>
Неудача при вводе/выводе на диске. В качестве <message> может быть выдано:



No error or no sense information, No Index, No Seeek/Command Complete, Write/Drive Fault, Drive Not Selected/Not Ready, No Track zero or Cylinder zero found, Multiple Drives Selected, Seek/Command in progresss, Cartige Changed, ID CRC, Uncorrectable Data ECC, ID Address Marl Not Found, Data Address M k Not Found, Sector Not Four, Seek Error, Sequence/DMA, Write Protected, Correctable ECC, Bad Track Encountered, Illegal Interleave Factor, Unknownm Error, Illegal Access To Alternated Track/Unable to Read the Alternate Track Address, Alternate of Bad Track Already Assigned, No Alternate Track Found, Illegal Alternate Track Address, Invalid Command, Illegal Disk Address, Illegal Function for Drive Type, Volume Overflow, RAM error, EPROM Checksum/Internal Diagnostic error, Error with unknown type or code

omti:ERROR:controller already in select state
Внутренняя ошибка - при выдаче команды контроллер занят.

omti:ERROR:cannot enter command phase
Контроллеру не удалось принять команду select.

omti:ERROR:C_D bit stuck off
Контроллеру не удалось индицировать готовность к команде.

omti:ERROR:OMTI_BUSY bit still stuck on
Контроллеру не удалось выполнить команду reset.

omti:INFO:unloading all requests
Подготовка к ручному сбросу, т. к. программный сброс не сработал.

omti:WARNING:colliding polling routines...
Внутренняя ошибка - несколько экземпляров omtipoll.

omti:ERROR:timed out
Ожидаемый сигнал прерывания не получен.

omti:ERROR:please use smft to modify disk parameters
Попытка писать характеристику диска непосредственно DIOWDISK ioctl.

Сообщения последовательного драйвера

serial:ERROR:Garbage or loose cable on dev num, port shut down
Одновременно получено слишком много сигналов прерывания. Проверте соединения.

Сообщения драйвера винчестера

wd:ERROR:on fixed disk dev=num/num block=num cmd=num status=num sector=num, cylinder/head=num/num
Неудача ввода/вывода на диске.

Сообщение драйвера событий

event:ERROR:event channel full
В очереди событий больше нет устройств.

event:ERROR:event table full
Все системные очереди событий открыты.

Сообщения драйвера клавиатуры

kb:ERROR:keyboard is an unknown mode
Клавиатура установлена ioctl() в неправильный режим. Разрешенные режимы клавиатуры - XT(0) и AT(1).

ПРИМЕЧАНИЯ

На некоторых машинах могут появляться не все сообщения, так как некоторые сообщения зависят от типа процессора.









MICNET(7)XENIX System V (1 янвapя 1988)


НАЗВАНИЕ

micnet - фaйл кoмaнд, выпoлняeмыx c пoмoщью yдaлeннoгo вызoвa

ОПИСАНИЕ

Фaйл micnet являeтcя cпиcкoм кoмaнд, кoтopыe мoгyт быть выпoлнeны кaк yдaлeнныe c пoмoщью remote. Фaйл тpeбyeтcя для вcex cиcтeм, paбoтaющиx в ceти Micnet. Koгдa кoмaндa remote пocтyпaeт в ceть, пpocмaтpивaeтcя фaйл micnet и, ecли нeoбxoдимoя кoмaндa нaйдeнa, oнa выпoлняeтcя. B пpoтивнoм cлyчae, кoмaндa игнopиpyeтcя, a cиcтeмe, издaвшeй remote вoзвpaщaeтcя cooбщeниe oб oшибкe.

Oпиcывaeмый фaйл мoжeт cocтoять кaк из oднoй, тaк из нecкoлькиx cтpoк. Фaйл, cocтoящий из oднoй cтpoки

executeall

oзнaчaeт, чтo вce кoмaнды мoгyт быть выпoлнeны кaк yдaлeнныe. Cтpoкa, oпpeдeляющaя кoнкpeтнyю кoмaндy, имeeт фopмaт

command=commandpatch.

Command - имя кoмaнды, зaдaeмoe в remote. commandpath - пoлнoe имя кoмaнды в cиcтeмe, гдe oнa выпoлняeтcя. Haпpимep,

cat=/bin/cat

oпpeдeляeт кoмaндy cat, зaпycкaeмyю yдaлeнным вызoвoм, кaк cиcтeмнyю кoмaндy cat в кaтaлoгe /bin.

Koгдa ycтaнoвлeнo executeall, пoдpaзyмeвaeтcя, чтo кoмaнды нaxoдятcя в pядe кaтaлoгoв, пpинятыx пo yмoлчaнию (/bin, /usr/bin). Пepeoпpeдeлeниe ocyщecтвляeтcя c пoмoщью cтpoки в фopмaтe

execpatch=PATH=directory[:directory]... ,

гдe directory - пoлныe имeнa кaтaлoгoв. paздeлeнныx двoeтoчиeм `:'. Haпpимep, cтpoкa

execpatch=PATH=/bin:/usr/bin:/usr/bobf/bin

oпpeдeляeт /bin, /usr/bin и /usr/bobf/bin кaк кaтaлoги для пoиcкa тpeбyющиxcя для выпoлнeния remote кoмaнд.

ФАЙЛЫ

/etc/default/micnet

СМ. ТАКЖЕ

, , systemid(8),

ЗАМЕЧАНИЯ

Koмaндa rcp нe мoжeт быть зaпyщeнa c пoмoщью yдaлeннoгo вызoвa, ecли нe ycтaнoвлeнo executeal или в фaйлe micnet нeт cтpoки

rcp=/usr/bin/rcp.



MKBOOT(8)


НАЗВАНИЕ

mkboot - создание новой программы начальной загрузки

ОПИСАНИЕ

Все файлы, необходимые для генерации новой программы начальной загрузки, находятся в каталоге /usr/src/boot.

Makefile Используйте этот make-файл для всех реконфигураций. Новая программа начальной загрузки создается командой make bootprom. iom.s Ассемблерный интерфейс; он начинает работу, проводит все необходимые для аппаратуры инициализации, затем вызывает основную программу загрузки. bootprom.c Главная программа процедуры загрузки. bootldinstr Инструкции для - как собрать программу начальной загрузки. Файл включает главным образом описания существующих областей ППЗУ и ОЗУ. libboot Библиотека об ектных файлов драйверов устройств, с которых можно загрузиться, и процедуры начальной загрузки. *boot.c Файлы с исходными текстами драйверов устройств, с которых можно загрузиться.

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

Когда новая программа станет работать правильно, исправьте обратно bootldisntr, снова соберите программу загрузки и поместите ее в ППЗУ.

СМ. ТАКЖЕ

.



MKDEV(8)


НАЗВАНИЕ

mkdev - вызывает программы для подключения периферийных устройств.

СИНТАКСИС

/etc/mkdev lp /etc/mkdev hd /etc/mkdev serial /etc/mkdev fs [device file] /etc/mkdev fd /etc/mkdev tape /etc/mkdev shl /etc/mkdev mouse

ОПИСАНИЕ

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

/etc/mkdev lp создает файлы устройств для работы с принтерами. (См. ).

/etc/mkdev hd создает файлы устройств для работы с периферийным жестким диском. Соответствующие файлы устройств для внутреннего жесткого диска уже существуют. hdinit вызывает следующие утилиты: , , и .

/etc/mkdev serial создает файлы устройст для работы с платами портов последовательной связи. Подобные файлы для первого и второго портов уже существуют. Когда к системе присоединяют платы расширения, эти файлы должны быть созданы для соответствующих дополнительных портов. Файлы /etc/ttys и /etc/ttytype модифицируются.

/etc/mkdev fs выполняет задачи системного обслуживания, требуемого для добавления к системе новой файловой системы, когда подключается новое устройство и создается файловая система (mkfs(8)). /etc/mkdev fs создает каталоги /file и /file/lost+found, резервирует поля в каталоге lost+found (если они уже существуют, то они остаются, как есть) и модифицирует /etc/checklist, /etc/default/filesys, /etc/default для проверки (fsck(8)) и монтирования (mount(8), , rc(1)) файловой системы соответствующим образом. Обычно эта команда работает в соединении с mkdev hd, когда к системе присоединяется второй жесткий диск, или с mkdev fd при создании на дискете монтируемой файловой системы, но может использоваться также для любой дополнительной файловой системы (например, на большом внутреннем жестком диске).

/etc/mkdev fd создает загрузочные дискеты с корневыми файловыми системами. Тремя основными опциями являются - одиночная загрузочная дискета с корневой файловой системой (только для форматов 96 или 135 дор/дюйм), загрузочная пара дискет с корневой файловой системой (формат 48 дор/дюйм) или дискета только с корневой файловой системой. В последнем случае используйте эту команду совместно с mkdev fs.


За один сеанс работы mkdev fs можно создать несколько таких дискет, но mkdev не высвечивает подсказку для замены дискет. Вставляйте следующую дискету, когда mkdev спросит:"Would you like to format the floppy first? (y/n)" (Не хотите ли вначале отформатировать дискету?)

/etc/mkdev tape конфигурирует драйвер стримера перед компоновкой нового ядра, включающего поддержку стримера. При этом подключается драйвер стандартного четверть-дюймового кассетного стримера и/или драйвер министримера.

При необходимости конфигурация текущих драйверов может быть высвечена или изменена. Наличие в любом из полей нуля означает, что драйвер автоматически определяет тип установленного устройства и использует для него "зашитые" значения. Если эти автоконфигурационные значения не верны для вашего драйвера, уточните правильные значения в документации по аппаратной части, установите конфигурацию драйвера и перекомпонуйте ядро. /etc/mkdev tape может также использоваться для удаления драйвера стримера из существующего ядра.

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

/etc/mkdev mouse инициализирует необходимые устройства и устанавливает конфигурацию системы для работы с любым поддерживаемым манипулятором типа "мышь".

После установки конфигурации драйвера вам будет предложено перекомпоновать ядро. При этом создаются соответствующие устройства в /dev.

Различные программы init выводят подсказки для ввода информации, необходимой для создания этих устройств.

ФАЙЛЫ

/usr/lib/mkdev/*

СМ. ТАКЖЕ

, , , fd(HW), , filesys(3), , hd(HW), lp(HW), ,mkfs(8), , , serial(HW), , tape(HW).

ПРИМЕЧАНИЯ

Обратите внимание, что /etc/mkdev tape не подключает драйвер стримерных систем типа SCSI.









MKDIR(1)


НАЗВАНИЕ

mkdir - создание каталога

СИНТАКСИС

mkdir [-m режим_доступа] [-p] каталог ...

ОПИСАНИЕ

По команде mkdir создается один или несколько каталогов с режимом доступа 0777 [возможно измененном с учетом и опции -m]. Стандартные файлы (. - для самого каталога и .. - для вышележащего) создаются автоматически; их нельзя создать по имени. Для создания каталога необходимо располагать правом записи в вышележащий каталог.

Идентификаторы владельца и группы новых директорий устанавливаются соответственно равными реальным идентификаторам владельца и группы процесса.

Командой mkdir обрабатываются две опции:

-m режим_доступа

Явное задание режима_доступа для создаваемых каталогов [см. ].

-p При указании этой опции перед созданием нового каталога предварительно создаются все несуществующие вышележащие каталоги.

ПРИМЕРЫ

Чтобы создать поддерево каталогов tmpdir/temp/dir, надо выполнить команду

mkdir -p tmpdir/temp/dir

СМ. ТАКЖЕ

, , . , в Справочнике программиста.

КОДЫ ЗАВЕРШЕНИЯ

0 Все каталоги были успешно созданы.

В противном случае выводится диагностическое сообщение и возвращается ненулевое значение, которое запоминается в переменной errno.



MKFIFO(1) FreeBSD Reference Manual


ИМЯ

mkfifo - создание FIFO-файлов

СИНТАКСИС

mkfifo fifo_name ...

ОПИСАНИЕ

Команда mkfifo создает FIFO-файлы с именами, указанными ее аргументами. Атрибуты защиты файла равны результату битовой операции ИЛИ над S_IRUSR, S_IRGRP, S_IWGRP,S_IROTH,S_IWOTH. Mkfifo возвращает 0 при успешном завершении и значение >0 в случае ошибки.

СМ. ТАКЖЕ

, rm(1), mkfifo(2) , mknod(8)

ИСТОРИЯ

Команда mkfifo появилась в 4.4BSD.



MKFS(1M)


НАЗВАНИЕ

mkfs - создание файловой системы

СИНТАКСИС

/etc/mkfs специальный_файл [число_блоков[:число_описателей]] [прототип] [промежуток число_блоков_на_цилиндре]

ОПИСАНИЕ

Утилита mkfs создает файловую систему на устройстве, заданном именем специального_файла. Последующие аргументы командной строки определяют характеристики создаваемой файловой системы. Перед началом содержательных действий утилита ждет 10 секунд, и в это время ее можно завершить аварийно, введя символ прерывания (обычно CTRL+C).

Из двух возможных вторых аргументов (число_блоков, прототип) должен быть задан ровно один.

Если второй аргумент командной строки является цепочкой цифр, он трактуется как десятичное число_блоков (физических, по 1024 байта), которые будет занимать файловая система. Если число_описателей файлов не указано, по умолчанию оно принимается равным количеству логических (теперь также 1024-байтных) блоков, деленному на 4. Утилита строит файловую систему, состоящую из единственного пустого каталога. Блок программы начальной загрузки (блок 0) остается неинициализированным. Впрочем, система эту информацию все равно не использует [см. ].

Если второй аргумент есть имя файла, доступного на чтение, mkfs рассматривает этот файл как прототип, задающий строение файловой системы. Прототип содержит поля, разделенные пробелами или символами перевода строки. Ниже приводится пример файла-прототипа.

/stand/diskboot 4872 110 d--777 3 1 usr d--777 3 1 sh ---755 3 1 /bin/sh ken d--755 6 1 $ b0 b--644 3 1 0 0 c0 c--644 3 1 0 0 $ $

Первая строка содержит имя файла с программой начальной загрузки (атавизм).

Строка 2 задает количество физических (по 1024 байта) блоков, которые будет занимать файловая система, и количество описателей файлов.

Строки 3-9 определяют файлы и каталоги, которые должны войти в файловую систему.

Строка 3: Корневой каталог.

Строки 4-6 и 8-9: Остальные каталоги и файлы.

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

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

Режим файла записывается в виде цепочки из шести символов. Первый символ обозначает тип файла. Этот символ может принимать одно из четырех значений: -bcd, которые означают соответственно обычный, специальный блочный, специальный символьный файл или файл-каталог. Второй символ может принимать значение u (переустанавливать идентификатор пользователя) или - (не переустанавливать). Третий символ может принимать значение g (переустанавливать идентификатор группы) или - (не переустанавливать). Затем указываются три восьмеричные цифры, определяющие права доступа владельца, группы и прочих пользователей [см. ].

После указания режима файла указываются две десятичные цифры; они определяют идентификаторы пользователя и группы для владельца файла.

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

Двумя последними аргументами командной строки являются промежуток между последовательно читаемыми блоками одного цилиндра и число_блоков_на_цилиндре. Если эти аргументы не заданы или имеют недопустимые значения, используются подразумеваемые значения, соответственно 7 и 400.

СМ. ТАКЖЕ

в Справочнике пользователя. , в Справочнике программиста.

СЮРПРИЗЫ

При указании файла-прототипа нельзя ни копировать файлы, размер которых превышает 64К байт, ни создавать ссылки.

Максимальное число описателей файлов равно 65500.



MKFS(8)


НАЗВАНИЕ

mkfs - формирует файловую систему.

СИНТАКСИС

/etc/mkfs [-y] [-n] special blocks[:inodes] [gap inblocks] /etc/mkfs [-y] [-n] special proto [gap inblocks] [-s blocks [:inode]]

ОПИСАНИЕ

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

Если оказывается, что этот специальный файл содержит файловую систему, то, прежде чем переписывать в нем информацию, потребуется подтверждение от оператора. Выбор опции -y ("да") перебивает эту установку и задет перезапись информации без всяких вопросов. Опция -n заставляет mkfs прекратить работу без всяких вопросов, если в назначенном файле содержится существующая файловая система. Выполняемая проверка заключается в том, что читается блок номер 1 (суперблок) и производится сравнение байтов. Если сравнение не проходит, то предполагается, что изменения несут значащую информацию и требуется подтверждение оператора.

Если второй аргумент задается в виде строки цифр, то mkfs строит файловую систему с единственным пустым каталогом в ней. Размер этой файловой системы определяется значением blocks, интерпретируемым как десятичное число. Загрузочная программа остается неинициализированной. Если задано количество inodes индексных дескрипторов, тогда это число должно совпадать с оценочным числом количества файлов в файловой системе. Если этот необязательный аргумент не задается, тогда количество индексных дескрипторов вычисляется как функция размера файловой системы.

Если второй аргумент представляет собой имя файла, который может быть открыт, mkfs предполагает, что это - файл прототипов proto, и черпает из него необходимые инструкции. Файл прототипов содержит лексемы, разделенные пробелами или символами перевода на новую строку. Первая лексема - имя файла, который копируется в блок 0 в качестве программы-загрузчика. Заголовок программы-загрузчика должен быть отсечен (см. ). Если же это не сделано, то mkfs выдаст предупреждение. Вторая лексема задает размер созданной файловой системы. Обычно это - количество блоков на устройстве, возможно, уменьшенное за счет пространства свопинга. Следующая лексема - это размер индексного списка (i-list) в блоках. Следующие лексемы задают спецификации корневого файла (root file). Спецификации файла состоят из лексем, задающих режим доступа, пользовательский идентификатор, групповой идентификатор и исходное содержание файла. Синтаксис поля содержания зависит от режима доступа к файлу.


Режим доступа к файлу задается строкой из 6 символов. Первый символ задает тип файла. (Символы -bcd задают соответственно файл регулярного типа, специальный файл блочно-ориентированного устройства и файл каталога.) Второй символ может быть либо "u", либо "-", определяя тип пользовательского режима. Третий символ может быть либо "g", либо "-", определяя режим групповых установок. Остальные символы режима доступа представляют собой трехзначное восьмиричное число, задающее разрешения на запись, чтение и выполнение в отношении владельца, группы и прочих пользователей; см. .

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

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

Ниже приведен пример спецификации прототипа:

/stand/diskboot 4872 110 d--777 3 1 usr d --773 3 1 sh ---755 3 1 /bin/sh ken d --755 6 1 $ b0 b--644 3 1 0 0 c0 c--644 3 1 0 0 $ $

Во второй версии данной команды опция -s перебивает размер и количество индексных дескрипторов в файле proto.

В обоих вариантах этой команды могут быть заданы факторы чередования для диска gap и inblocks. Эти факторы определяют аппаратное функционирование жестких дисков и подробно описываются в Руководстве администратора системы UNIX.

СМ. ТАКЖЕ

, filesystem(3), dir(3),

ПРИМЕЧАНИЯ

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

Эта утилита использует блоки размера BSIZE. В отношении размеров блоков файловой системы смотрите страницу документации manual(HW).









MKMINI(1M)


НАЗВАНИЕ

mkmini - создание минимальной файловой системы, необходимой для загрузки UNIX'а

СИНТАКСИС

/etc/mkmini блочное_устройство [mkfs_параметры]

ОПИСАНИЕ

Утилита mkmini создает с помощью команды mkfs файловую систему на указанном блочном_устройстве. Если mkfs_параметры не заданы, используются значения по умолчанию. Mkfs_параметры описаны в .

Затем mkmini копирует в созданную файловую систему необходимые файлы, после чего с блочного_устройства можно загружать UNIX.

Утилита mkmini написана на языке shell.

СМ. ТАКЖЕ

, .



MKMODULES(1)


ИМЯ

mkmodules - перестраивает модули базы данных для CVS

СИНТАКСИС

mkmodules directory

ОПИСАНИЕ

mkmodules перестраивает модули базы данных используя cvs(1). В указанной директории ожидается нахождение файлов modules,v и loginfo,v. mkmodules внимательно проверяет текущие заголовки для каждого файла и перестраивает формат моделей базы данных ndbm(3).

ФАЙЛЫ

modules,v Модули RCS файла. modules Файл проверенных модулей. loginfo,v loginfo RCS файл. loginfo Проверенный loginfo файл. modules.dir, modules.pag Модули базы данных формата ndbm(1).

ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ

RCSBIN указывает полный путь к программам RCS, таким как , . Если переменная не установлена, то по умолчанию путь /usr/local/bin.

СМ. ТАКЖЕ

, , cvs(1), ,



MKNOD(1M)


НАЗВАНИЕ

mknod - создание специального файла

СИНТАКСИС

/etc/mknod имя [b] [c] старший_номер младший_номер /etc/mknod имя p

ОПИСАНИЕ

Команда mknod создает элемент каталога и описатель для специального файла.

Первым аргументом является имя элемента каталога. По соглашениям ОС UNIX специальные файлы хранятся в каталоге /dev.

В первом варианте команды аргумент b означает, что специальный файл является блочным (диски, магнитная лента); аргумент c означает, что файл является символьным. Из двух аргументов - b и c - должен присутствовать ровно один. Старший и младший номера устройства могут быть как десятичными, так и восьмеричными. Назначение старших номеров устройств специфично для каждой системы. Информация об устройствах и их номерах содержится в системном файле conf.c.

Второй вариант команды mknod используется для создания именованных каналов.

Команду mknod может выполнять только суперпользователь.

СМ. ТАКЖЕ

в Справочнике программиста.



MKNOD(2)


НАЗВАНИЕ

mknod - создание каталога, специального или обычного файла

СИНТАКСИС

int mknod (path, mode, dev) char *path; int mode, dev;

ОПИСАНИЕ

Системный вызов mknod создает новый файл с маршрутным именем, на которое указывает аргумент path. Режим нового файла определяется аргументом mode. Биты в значении mode интерпретируется следующим образом:

0010000Специальный именованный канал. 0020000Специальный символьный файл. 0040000Каталог. 0060000Специальный блочный файл. 0100000
или
0000000Обычный файл.

Остальные биты в значении mode трактуются как в системном вызове .

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

Значения аргумента mode, построенные не по правилам, описанным выше, считаются неопределенными и не должны использоваться. Младшие 9 бит значения mode модифицируются маской режима создания файлов: обнуляются те биты, которые соответствуют единичным битам маски[см. ]. Если mode определяет специальный блочный или символьный файл, то аргумент dev задает зависимую от конфигурации системы спецификацию блочного или символьного устройства ввода/вывода; в противном случае аргумент dev игнорируется.

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

Системный вызов mknod завершается неудачей и новый файл не создается, если выполнено хотя бы одно из следующих условий:

[EPERM] Действующий идентификатор пользователя процесса не равен идентификатору суперпользователя. [ENOTDIR] Компонент маршрута не является каталогом. [ENOENT] Компонент маршрута не существует. [EROFS] Каталог, в котором файл должен быть создан, расположен в файловой системе, доступной только на чтение. [EEXIST] Указанный файл уже существует. [EFAULT] Аргумент path указывает за пределы отведенного процессу адресного пространства. [EINTR] Во время выполнения системного вызова перехвачен сигнал. [ENOLINK] Маршрутное имя path указывает на удаленный компьютер, связи с которым в данный момент нет. [EMULTIHOP] Компоненты path требуют многократного обращения к удаленным компьютерам.

СМ. ТАКЖЕ

, , , . в Справочнике пользователя.

ДИАГНОСТИКА

При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.

ПРЕДОСТЕРЕЖЕНИЯ

Если системный вызов mknod используется для создания устройства в каталоге на удаленном компьютере (система РУФ), то старший и младший номера устройства интерпретируются обслуживающим процессом.



MKSHLIB(1)


НАЗВАНИЕ

mkshlib - создание разделяемой библиотеки

СИНТАКСИС

mkshlib -s файл_спецификаций [-t библ_выполнения] [-h библ_сборки] [-n] [-L каталог] [-q]

ОПИСАНИЕ

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

Разделяемая библиотека сборки - это архив, который используется при редактировании связей между программами пользователя и разделяемой библиотекой [см. ]. С разделяемой библиотекой сборки можно работать точно так же, как и с неразделяемой, она может обычным образом включаться в команду . Кроме того, все операции, которые можно выполнять над архивом, могут быть выполнены и над разделяемой библиотекой сборки.

Разделяемая библиотека выполнения - это выполняемый модуль, который присоединяется к процессу пользователя во время выполнения программы, использующей разделяемую библиотеку. Разделяемая библиотека выполнения содержит секции команд всех подпрограмм библиотеки; в ней не должно быть неразрешенных ссылок. Разделяемая библиотека выполнения будет загружена в память во время выполнения программы, использующей разделяемую библиотеку, и другие процессы, использующие ту же библиотеку, будут разделять уже загруженные в память секции команд, но каждый процесс будет иметь свою копию секции данных.

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

Команда mkshlib производит вызов других программ, таких как , , . Обращение к другим программам происходит с помощью системного вызова execvp [см. ], который ищет нужную программу в каталогах из списка поиска, хранящегося в переменной PATH. Команда mkshlib обрабатывает префиксы так же, как и команда ; все программы, к которым производится обращение, получают тот же префикс. Например, pfxmkshlib вызовет pfxld.

Команда mkshlib распознает следующие опции:


-s файл_спецификаций

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

-t библ_выполнения

Указывает файл, в который будет помещена создаваемая разделяемая библиотека выполнения. Для того, чтобы воспользоваться разделяемой библиотекой выполнения, ее необходимо переместить в то место, которое указано в файле спецификации (см. ниже директиву #target). Если используется опция -n, генерации разделяемой библиотеки выполнения не производится.

-h библ_сборки

Указывает файл, в который будет помещена создаваемая разделяемая библиотека сборки. Если эта опция не указана, генерации разделяемой библиотеки сборки не производится.

-n Не генерировать разделяемую библиотеку выполнения. Эта опция используется для того, чтобы создать только разделяемую библиотеку сборки. Тем не менее, следует обязательно указывать и опцию -t, так как для создания разделяемой библиотеки сборки требуется версия разделяемой библиотеки выполнения.

-L каталог ...

Изменить алгоритм поиска для разделяемых библиотек сборки, указанных директивой #objects noload, так, что поиск вначале производится в указанном каталоге, а только потом в каталогах по умолчанию. Опция -L может быть указана в командной строке несколько раз, при этом каталоги просматриваются в указанном порядке перед поиском в каталогах по умолчанию.

-q Не выдавать предупреждающих сообщений. Эта опция используется, если известно, что будет выдано множество ненужных предупреждений.

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

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



#address секция адрес

Указывает начальный адрес секции разделяемой библиотеки выполнения. Эта директива обычно используется для задания начальных адресов секций .text и .data.

#target маршрутное_имя

Задает маршрутное_имя разделяемой библиотеки выполнения во время ее использования. Указанное имя записывается в файлы типа a.out(4), обращающиеся к разделяемой библиотеке, и служит операционной системе для поиска разделяемой библиотеки, когда она требуется выполняемому файлу.

#branch

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

имя_функции пробел_или_табуляция позиция

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

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

#objects

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

#objects noload



За данной директивой следует список имен разделяемых библиотек сборки. Эти библиотеки просматриваются в том порядке, в котором они указаны, для разрешения ссылок из создаваемой разделяемой библиотеки. При этом ситуация, когда неразделяемая версия об екта обнаруживается раньше разделяемой, трактуется как ошибочная.

Имя разделяемой библиотеки сборки задается как маршрутное имя файла или как аргумент вида -lX, где libX.a является именем файла в каталоге LIBDIR или LLIBDIR. Описываемая ситуация аналогична ситуации с , и для задания других каталогов поиска библиотек можно воспользоваться опцией -L.

Отметим, что если с помощью директивы #objects noload указана разделяемая библиотека сборки, то в каждой команде cc, редактирующей связи с создаваемой разделяемой библиотекой, нужно также задавать упомянутую разделяемую библиотеку сборки.

#hide linker [*]

Эта директива делает внешние имена локальными для создаваемой разделяемой библиотеки. В последующих строках могут задаваться регулярные выражения [см. , ], и если внешнее имя соответствует хотя бы одному из выражений, оно становится локальным. Оставить некоторые имена внешними можно с помощью директивы #export (см. ниже). Необязательный аргумент * эквивалентен последовательности

#hide linker *

и приводит к тому, что все внешние имена становятся локальными.

Все имена, использованные в директивах #init и #branch, всегда являются внешними и не могут быть сделаны локальными с помощью директивы #hide.

#export linker [*]

В последующих строках могут задаваться внешние имена, которые из-за соответствия регулярным выражениям директивы #hide могли бы стать локальными. Например, последовательность директив

#hide linker * #export linker one two

приводит к тому, что все имена, кроме one и two, а также тех, которые упомянуты в директивах #init и #branch, становятся локальными.

#init об ектный_файл

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



указатель пробел_или_табуляция имя

где указатель - это указатель на внешнее имя; указатель должен быть определен в об ектном_файле. Для каждой такой строки генерируются команды инициализации вида:

указатель=&имя;

Повторная инициализация указателей не допускается, так же, как и повторное использование директивы #init для того же об ектного_файла.

#ident цепочка_символов

Задает цепочку_символов, которая будет включена в секцию комментариев (.comment) разделяемой библиотеки выполнения.

## Комментарий. Строки, начинающиеся с ##, игнорируются.

ФАЙЛЫ

LIBDIR Обычно /lib. LLIBDIR Обычно /usr/lib. TMPDIR/* Временные файлы.

Обычно каталог TMPDIR - это /usr/tmp, однако данное соглашение можно изменить, присвоив переменной окружения TMPDIR другое значение [см. tempnam( ) в ].

СМ. ТАКЖЕ

, , , , , . a.out(4), в Справочнике программиста.

ОГРАНИЧЕНИЯ

Опцию -n нельзя использовать одновременно с директивой #objects noload. Если указать разделяемую библиотеку сборки, которая уже существует, то mkshlib обновит ее с помощью команды ar -ru. Следовательно, если удаляется или переименовывается об ектный файл, включенный в разделяемую библиотеку сборки, то перед обновлением нужно обязательно удалить разделяемую библиотеку сборки.









MKSTR(1) XENIX System V (21 июня 1987)


ИМЯ

mkstr - coздaниe фaйлa c тeкcтaми cooбщeний

СИНТАКСИС

mkstr [ - ] messagefile prefix file ...

ОПИСАНИЕ

Mkstr иcпoльзyeтcя для coздaния фaйлoв c тeкcтaми cooбщeний oб oшибкax. Ee пpимeнeниe мoжeт знaчитeльнo coкpaтить paзмep пpoгpaммы c бoльшим кoличecтвoм диaгнocтичecкиx cooбщeний и cнизить нaгpyзкy нa cиcтeмy зa cчeт ycтpaнeния нeoбxoдимocти пocтoяннo выгpyжaть и зaгpyжaть тeкcт cooбщeний.

Mkstr oбpaбaтывaeт кaждый yкaзaнный фaйл file, пoмeщaя oбpaбoтaннyю вepcию вxoднoгo фaйлa в дpyгoй фaйл, чьe имя cocтoит из пpeфикca prefix и пepвoнaчaльнoгo имeни фaйлa. Tипичнaя кoмaндa mkstr выглядит cлeдyющим oбpaзoм:

mkstr pistrings xx *.c

Этa кoмaндa пpивoдит к тoмy, чтo вce cooбщeния из фaйлoв нa Cи, xpaнящиxcя в тeкyщeм кaтaлoгe, бyдyт пoмeщeны в фaйл pistrings, a oбpaбoтaнныe кoпии иcxoдныx фaйлoв бyдyт нaxoдитьcя в фaйлax c пpeфикcaми xx.

Для oбpaбoтки cooбщeний в иcxoдныx фaйлax mkstr ищeт вo вxoднoм пoтoкe cтpoкy `error("'. Пpи ee oбнapyжeнии cтpoкa, нaчинaющaяcя c `"', пoмeщaeтcя в фaйл, дoпoлняeмaя нyлeвым cимвoлoм и пepeвoдoм cтpoки. Hyлeвoй cимвoл пoзвoляeт yпpocтить пpoцeдypy извлeчeния cтpoк, пepeвoд cтpoки пoзвoляeт для пpocмoтpa coдepжимoгo фaйлa cooбщeний пpимeнять пpoгpaммy cat. Oбpaбoтaннaя кoпия иcxoднoгo тeкcтa пpoгpaммы coдepжит ycтaнoвкy yкaзaтeля c пoмoщью фyнкции lseek внyтpи фaйлa, из кoтopoгo извлeкaютcя cooбщeния. Пpoгpaммиcт дoлжeн нaпиcaть фyнкцию error, кoтopaя oткpывaeт фaйл cooбщeний, читaeт из нeгo cтpoкy и вывoдит ee. Cлeдyющий пpимep иллюcтpиpyeт этoт пoдxoд.

char efilname[] = "/usr/lib/pi_strings"; int efil = -1; error(a1, a2, a3, a4) { char buf[256]; if (efil < 0) { efil = open(efilname, 0); if (efil < 0) { oops: perror(efilname); exit(1); } } if (lseek(efil, (long) a1, 0) read(efil, buf, 256) <= 0) goto oops; printf(buf, a2, a3, a4); }

СМ. ТАКЖЕ

,

ПРИМЕЧАНИЯ

Bce apгyмeнты, зa иcключeниeм имeни фaйлa, являютcя нeoбязaтeльными



MKTEMP(3C)


НАЗВАНИЕ

mktemp - создание уникального имени файла

СИНТАКСИС

char *mktemp (template) char *template;

ОПИСАНИЕ

Функция mktemp заменяет цепочку символов, на которую указывает template, уникальным именем файла, и возвращает адрес этой цепочки. Исходная цепочка должна выглядеть как имя файла с шестью символами X в конце; функция mktemp заменит их буквой и идентификатором текущего процесса. Буква будет выбрана так, чтобы получающееся имя не дублировалось.

СМ. ТАКЖЕ

, , .

ДИАГНОСТИКА

Если уникального имени создать не удалось (например, из-за отсутствия символов X в исходной цепочке), то исходная цепочка либо становится пустой, либо не изменяется.

ОГРАНИЧЕНИЯ

При вызове более 17576 раз в одном процессе эта функция начнет циклически вырабатывать уже использованные имена.



MKUSER(8)


НАЗВАНИЕ

mkuser - добавляет к системе идентификатор входа в систему.

СИНТАКСИС

/etc/mkuser

ОПИСАНИЕ

mkuser используется для добавления к системе пользовательских идентификаторов входа в систему. При добавлении к системе новых пользователей этот метод является предпочтительным, поскольку он обеспечивает все функции создания каталогов и модификации файла паролей. Для добавления к системе нового пользователя mkuser требует шесть информационных элементов:

регистрационное имя (имя входа в систему) идентификатор пользователя идентификатор группы исходный пароль строку комментариев для файла /etc/passwd (необязательно)

Регистрационное имя проверяется с помощью определенного критерия (т.е. оно должно состоять по крайней мере из трех символов и начинаться с прописной буквы). Пароль должен соответствовать стандартным соглашениям, принятым в системе UNIX (см. passwd(3)). Поле комментариев файла паролей может содержать до 35 символов информации.

mkuser просит задания типа оболочки, которая назначается новому пользователю. Выбор оболочек определяется количеством оболочек, устанавливаемых в системе. Оболочки, включенные в операционную систему, - это стандартная (Бурновская) оболочка, sh, и ограниченная оболочка, rsh. Каждая установленная оболочка представляется подкаталогом /usr/lib/mkuser/shell, который / устанавливается вместе с пакетом оболочки (см. ). Подкаталог оболочки содержит файлы, необходимые для установки пользовательского окружения для работы в этой оболочке. Это файлы - mkuser.defs и mkuser.init плюс все добавочные файлы, специфические для данной оболочки. (Например, /usr/lib/mkuser/csh/cshrc и /usr/lib/mkuser/csh/login - это стандартные файлы .cshrc и .login, используемые оболочкой csh, которые копируются в рабочий каталог пользователя, когда запускается программа mkuser.)

mkuser берет некоторые из своих параметров из файла /etc/default/mkuser. Примерный вид этого файла таков:

HOME=/usr HOMEMODE=0755 PROFMODE=0640 MAILMODE=0640

Запись HOME задает рабочий каталог пользователя, запись HOMEMODE разрешения для рабочего каталога пользователя, запись PROFMODE задает режим доступа к файлам .login, .profile, .cshrc и прочим специфическим для оболочки файлам, а запись MAILMODE - разрешения для почтового ящика пользователя.


Этот файл может быть отредактирован привилегированным пользователем, и эти установки могут быть изменены. Эти установки могут быть также заданы для каждой оболочки посредством добавления аналогичных записей в соответствующий файл /usr/lib/mkuser/shell/mkuser.def. Кроме того, имеются и другие файлы, которые могут быть адаптированы. Они включают файл /usr/lib/mkuser/lib/mail, который содержит стандартное почтовое сообщение, направляемое новым пользователям, файл /usr/lib/mkuser/lib/help, который содержит пояснение, высвечиваемое программой mkuser при запуске, файл /usr/lib/mkuser/shell/mkuser.init и все другие относящиеся к оболочке файлы.

mkuser резервирует пользовательские идентификаторы, начиная с номера 200, который является самым большим номером, используемым в файле паролей. (Оператор может присвоить новому пользователю специфический идентификатор. Он должен быть больше 200 и не должен совпадать с уже существующими номерами.) По умолчанию групповой идентификатор новых пользователей равняется 50. Это минимальный групповой идентификатор, допускаемый для пользовательских бюджетов. Оператору предоставляется возможность приписать пользователя к группе, устанавливаемой по умолчанию, или к какой-либо существующей группе (высвечиваются только группы с идентификаторами, большими или равными 50, однако, можно выбрать любую группу.) Кроме того, может быть создана новая группа, и в этом случае оператор может задать ее имя или идентификатор (или оба вместе). Если задается только имя, то группе присваивается очередной свободный номер.

mkuser может быть выполнена только привилегированным пользователем.

Минимальная длина действительноо пароля, а также минимальные и максимальные количества недель, используемые для временного сопровождения пароля, задаются в файле /etc/default/passwd с помощью переменных PASSLENGTH, MINWEEKS и MAXWEEKS. Например, эти переменные могут быть установлены следующим образом:

PASSLENGTH=6 MINWEEKS=2 MAXWEEKS=6

ФАЙЛЫ

/etc/passwd /usr/spool/mail/username /etc/default/mkuser /etc/default/passwd /usr/lib/mkuser/mkuser/lib/lib/help /usr/lib/mkuser/shell/mkuser.defs /usr/lib/mkuser/shell/mkuser.init /usr/lib/mkuser/shell/shellfiles

СМ. ТАКЖЕ

, , , , , , group(3), passwd(3), ,









MKUTS(8)


НАЗВАНИЕ

mkuts - создание нового ядра ОС UNIX

ОПИСАНИЕ

Почти все файлы, необходимые для генерации нового ядра ОС UNIX, находятся в каталоге /usr/src/uts.

Makefile Используйте этот make-файл для всех реконфигураций. Новое ядро создается командой make unix. dfile, master Эти файлы используются утилитой для создания программ conf.c и low.s. В файлах содержится описание драйверов устройств и основных системных параметров. name.c Небольшой исходный файл, в котором инициализируется системная структура utsname. ram.c В этом файле находятся некоторые основные функции, подобные raminit, которые можно изменить, исходя из нужд конкретной конфигурации. unildinstr Инструкции для - как собрать ядро. lib* Библиотеки об ектных файлов UNIX-ядра. libio Библиотека, содержащая драйверы устройств. io/ Этот каталог содержит исходные тексты драйверов устройств и make-файл для пересборки библиотеки драйверов.

Включаемый файл <sys/io.h>, который используется в программе conf.c, содержит параметры устройств. При подключении нового устройства этот файл также нуждается в изменении.

После того, как новое UNIX-ядро создано, в целях тестирования его можно загрузить, указав в программе начальной загрузки полное маршрутное имя /usr/src/uts/unix. Но в конце концов ядро нужно переместить в корневой каталог, так как некоторые программы, такие как /bin/ps, используют файл /unix.

СМ. ТАКЖЕ

.

, , в Справочнике программиста.



MLABEL(1)


ИМЯ

mlabel - создает метку на устройстве MSDOS

СИНТАКСИС

mlabel [ -v ] drive: [ new_label ]

ОПИСАНИЕ

Mlabel показывает метку на указанном устройстве, если она существует. Если параметр new_label не указан, то выдается запрос пользователю на новую метку. Для удаления существу- ющей метки достаточно нажать enter.

v Режим сообщений. Показывает новую метку устройства, если метка неправильная. Очищает существующую метку и выводит подсказки пользователю.

Mlabel возвращает 0 в случае успеха и 1 при возникновении ошибки

СМ. ТАКЖЕ

mformat(1)



MMD(1)


ИМЯ

mmd - создают поддиректорию MSDOS

СИНТАКСИС

mmd [ -voOsSrRA ] msdosdirectory [ msdosdirectories... ]

ОПИСАНИЕ

Mmd создает новую директорию в файловой системе MSDOS

v Режим сообщений. Показывает имя новой директории как только она создается.

Возникает сообщение об ошибке, если директория уже существует.

СМ. ТАКЖЕ

mtools(1), ,



MMOUNT(1)


ИМЯ

mmount - монтирует диск MSDOS

СИНТАКСИС

mmount msdosdrive [mountargs]

ОПИСАНИЕ

Mmount читает boot sector диска MSDOS, конфигурирует устройство и монтирует его как mountargs. Если mountargs не указан, то используется имя устройства. Если запись на диск запрещена, то он автоматически устанавливается как доступный только по чтению.

СМ. ТАКЖЕ

mtools(1),



Mnt, umnt


НАЗВАНИЕ

mnt, umnt - монтирование файловой системы

СИНТАКСИС

/usr/bin/mnt [-urant] [каталог] /usr/bin/umnt каталог

ОПИСАНИЕ

Команда mnt открывает всем пользователям, не являющимся суперпользователем, доступ к функциональным возможностям команды по монтированию выбранных файловых систем. Суперпользователь может описывать порядок монтирования в записях файла /etc/default/filesys.

Требования к файловой системе - те же, что и для команды .

Команда umnt демонтирует файловую систему, смонтированную ранее в указанном каталоге.

Mnt запускается из /etc/rc с флагами -r, -n и -a для монтирования файловых систем при входе в многопользовательский режим. Флаг -a используется при автозагрузке системы. В обычной командной строке ни один из этих флагов не нужен.

Флаг -n означает монтирование всех файловых систем, которым в файле /etc/default/filesys соответствуют fstyp="NFS" и rcmount="yes". Для файловых систем этого типа bdev определяется как:

bdev=hostname:/pathname

В то же время rcfsck должно быть = "no", а cdev может вообще отсутствовать.

Флаг -t отображает содержимое /etc/default/filesys.

С флагом -u команда mnt действует подобно umnt.

ОПЦИИ

Запись, описывающая файловую систему в /etc/default/filesys, может содержать следующие опции:

bdev=/dev/устройство Имя блочного устройства, ассоциированного с файловой системой.

cdev=/dev/устройство Имя устройства посимвольного вводавывода, ассоциированного с файловой системой.

mountdir=/каталог Каталог, в котором монтируется файловая система.

desc=имя Строка, описывающая файловую систему.

passwd=строка Необязательный пароль, запрашиваемый в момент ввода команды монтирования. Не может быть простой строкой; должен иметь формат /etc/passwd. (См. Замечания.)

fsck=yes,no,dirty,prompt "Yes/no" означает явное указание того, запускать ли или не запускать fsck. Если указано "dirty", fsck запускается только в том случае, когда файловая система требует очистки. Если указано "prompt", выбор делает пользователь. По умолчанию принимается "dirty".

fsckflags=флаги Флаги, передаваемые fsck.

rcfsck=yes,no,dirty,prompt


Походит на fsck, но используется только с флагом -r.

maxcleans=n Число циклов повторной очистки файловой системы. По умолчанию - 4.

mount=yes,no,prompt "Yes/no" означает разрешение/неразрешение монтирования файловой системы. Если указано "prompt", решение остается за пользователем.

rcmount=yes,no,prompt Если "yes", то при входе в многопользовательский режим файловая система монтируется под управлением /etc/rc2. Если "no", файловая система никогда не будет монтироваться под управлением /etc/rc2. Если указано "prompt", при загрузке будет выдано приглашение смонтировать файловую систему.

mountflags=флаги Флаги, передаваемые команде mount.

prep=yes,no,prompt Prepcmd исполнять, соответственно, всегда, никогда или по запросу пользователя.

prepcmd=команда Произвольная команда shell'а, запускаемая сразу после проверки пароля и перед fsck.

init=yes,no,prompt Initcmd исполнять, соответственно, всегда, никогда или по запросу пользователя.

initcmd=команда Необязательная, произвольная команда shell, запускаемая сразу после успешного монтирования.

fstyp=тип Тип файловой системы. Возможные значения - NFS, S51K, XENIX и DOS.

nfsopts=опции Опции для файловых систем типа NFS. Возможные опции описаны в разделе mount(NADM).

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

Единственными обязательными значениями в файле /etc/default/filesys являются bdev и mountdir. Опции prepcmd и initcmd могут использоваться для выполнения той или иной команды до и после монтирования файловой системы. Так, например, опция initcmd может использоваться для посылки почты в корневую файловую систему, невзирая на время монтирования данной системы.

Команда mnt без аргументов пытается смонтировать все файловые системы с параметрами mount=yes или mount=prompt.

ПРИМЕРЫ

Рассмотрим пример содержимого файла /etc/default/filesys:

bdev=/dev/root cdev=/dev/rroot mountdir=\ / desc="The Root Filesystem" rcmount=no mount=no bdev=/dev/u cdev=/dev/ru mountdir=/u rcmount=yes \ fsckflags=-y desc="The User Filesystem" bdev=/dev/x cdev=/dev/rx mountdir=/u rcmount=no \ mount=yes fsckflags=-y desc="The Extra Filesystem"



Из всех вышеописанных систем только система /x может монтироваться пользователем.

ФАЙЛЫ

/etc/default/filesys Информация о файловых системах

СМ. ТАКЖЕ

,

ДИАГНОСТИКА

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

ЗАМЕЧАНИЯ

В файловой системе реализуется некоторый уровень проверки данных, однако явно запорченные системы монтировать все-таки не следует.

Для того, чтобы присвоить файловой системе пароль, администратор системы должен воспользоваться командой с опцией -f.

ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ

Mnt является расширением AT&T System V, распространением которой занимается Santa Cruz Operation.









Mnttab


НАЗВАНИЕ

Таблица монтированных файловых систем

СИНТАКСИС

#include <mnttab.h>

ОПИСАНИЕ

Mnttab находится в каталоге /etc и содержит в себе таблицу устройств, смонтированных командой , следующей структуры:

struct mnttab { char mt_dev[32]; char mt_filsys[32]; short mt_ro_flg; time_t mt_time; char mt_fstyp[16]; char mt_mntopts[64]; };

Каждая запись имеет длину 150 байт:

первые 32 байта представляют собой дополненный пустыми символами идентификатор места монтирования специального файла; следующие 32 байта представляют собой дополненный пустыми символами идентификатор корня монтируемого специального файла; следующие 6 байт содержат привилегии записи/чтения по отношению к монтированному специальному файлу и дату монтирования; следующие 16 байт представляют собой дополненный пустыми символами идентификатор типа файловой системы; следующие 64 байта составляют строку опций команды mount;

Опции mount нужны только для файловой системы типа NFS.

Максимальное число записей таблицы mnttab определяется значением системного параметра NMOUNT, находящимся в файле /etc/master.d/kernel и описывающим число разрешенных к монтированию специальных файлов.

СМ. ТАКЖЕ

,



MNTTAB(4)


НАЗВАНИЕ

mnttab - таблица смонтированных файловых систем

СИНТАКСИС

#include <mnttab.h>

ОПИСАНИЕ

Файл mnttab находится в каталоге /etc и содержит таблицу устройств, смонтированных командой . Таблица имеет следующую структуру, определенную во включаемом файле <mnttab.h>:

struct mnttab { char mt_dev[32]; char mt_filsys[32]; short mt_ro_flg; time_t mt_time; };

Каждая запись состоит из 70 байт; первые 32 байта - дополненное нулями имя специального файла, содержащего смонтированную файловую систему; следующие 32 байта представляют дополненное нулями имя каталога, к которому подключена файловая система; оставшиеся 6 байт содержат описание прав доступа на чтение/запись к смонтированной файловой системе и дату монтирования.

Максимальное число записей в mnttab (максимально допустимое число смонтированных файловых систем) задается величиной NMOUNT, которая определяется в . Отметим, что константа NMOUNT из файла <mnttab.h> ни на что не влияет.

СМ. ТАКЖЕ

, в Справочнике администратора.



MONITOR(3C)


НАЗВАНИЕ

monitor - подготовка временного профиля программы

СИНТАКСИС

#include <mon.h>

void monitor (lowpc, highpc, buffer, bufsize, nfunc) int (*lowpc)( ), (*highpc)( ); WORD *buffer; int bufsize, nfunc;

ОПИСАНИЕ

В выполняемую программу, полученную с помощью команды cc -p, автоматически вставляются вызовы функции monitor с подразумеваемыми значениями аргументов; явно эту функцию следует вызывать только тогда, когда нужно иметь возможность тонкого управления профилированием.

Функция monitor представляет собой интерфейс к системному вызову . Аргументы lowpc и highpc являются адресами двух функций; buffer - это адрес (пользовательского) массива элементов типа WORD (тип определен во включаемом файле <mon.h>), длина массива задается аргументом bufsize. Функция monitor организует запись в массив buffer гистограммы значений периодически опрашиваемого счетчика команд, а также счетчиков числа вызовов некоторых функций. Диапазон фиксируемых значений счетчика команд простирается от lowpc (нижний предел) до highpc (диапазон кончается перед этим адресом). Нижний предел lowpc должен быть отличен от нуля. Храниться может не более nfunc счетчиков вызовов; фиксируются вызовы только тех функций, которые были откомпилированы с опцией профилирования -p команды .

Чтобы результаты измерений давали представление о реальной ситуации, особенно когда есть небольшие, но часто используемые функции, надо, чтобы размер массива buffer был сравнимым с отслеживаемым диапазоном адресов.

Для подготовки временного профиля всей программы достаточно следующей конструкции:

extern etext; ... monitor ((int (*)()) 2, &etext, buf, bufsize, nfunc);

Объект etext лежит непосредственно за сегментом команд [см. ].

Чтобы прекратить профилирование и записать результаты, следует использовать обращение

monitor((int (*)()) 0, 0, 0, 0, 0);

Затем для просмотра результатов можно воспользоваться командой .

С помощью переменной окружения PROFDIR можно управлять именем выходного файла функции monitor. Если такой переменной нет, то в текущем каталоге создается файл mon.out. Если переменная существует, но значения у нее нет, то monitor не профилирует программу и не создает выходной файл. В противном случае создается выходной файл с именем $PROFDIR/идентификатор_процесса.mon.out. При автоматическом вызове процедуры monitor после компиляции по команде cc -p выходной файл получает имя $PROFDIR/идентификатор_процесса.имя_программы.

ФАЙЛЫ

mon.out

СМ. ТАКЖЕ

, .

, в Справочнике пользователя.

СЮРПРИЗЫ

Форма

$PROFDIR/идентификатор_процесса.mon.out

не работает. Работает автоматическая форма

$PROFDIR/идентификатор_процесса.имя_программы



MORE(1)


ИМЯ

more - Осуществляет поэкранный просмотр текста файла.

СИНТАКСИС

more [ -cdflrsuw ] [-n ] [ +linenumber ] [ +/pattern ] [ name... ]

ОПИСАНИЕ

Этот фильтр позволяет осуществлять проверку текста, выведенного на один полный экран. После каждого заполнения экрана команда делает паузу и выводит на нижней строке экрана сообщение типа:

--More-

(дальше). Если при этом пользователь нажимает клавишу carriage return (возврат каретки), то на экран будет выведена следующая строка текста. Если пользователь нажимает клавишу SPACE (пробел), будет выведен следующий полный экран. Другие возможности описаны ниже.

ОПЦИИ

-n Целое число, используемое в качестве размера окна (в строках) вместо принятого для команды more по умолчанию. -с Команда more отображает в верхней части экрана каждую страницу с начала, стирая при этом предварительно выведенную там строку. Это исключает прокрутку экрана, облегчая чтение текста с помощью команды more. Эта опция игнорируется, если терминал не имеет возможности очищать строку до конца. -d Команда more в конце каждого заполненного экрана высвечивает сообщение " Hit space to continue, Rubout to abort" ("Нажмите пробел для продолжения, а Rubout -для прерывания"). Эта опция полезна, если команда more используется в качестве фильтра в некоторых системах, таких как класс, где многие пользователи могут быть неопытными. -f Под действием этой опции команда more считает не экранные, а логические строки. То есть, длинные строки не заворачиваются. Рекомендуется использовать эту опцию, если вывод команды nroff подключается в конвейер через команду ul, которая может генерировать escape последовательности. Эти escape - последовательности содержат символы, которые обычно занимают экранные позиции, но не печатаются при выводе на терминал в качестве части escape - последовательности. Таким образом, команда more может решить, что строки длиннее, чем они есть на самом деле и ошибочно завернуть их. -l Умышленно не обрабатывается команда Ctrl-L (form feed - переход на новую страницу). Если не задана эта опция, команда more останавливается после любой строки, содержащей Ctrl-L, до тех пор, пока экран не заполнится до конца. Также, если некоторый файл начинается со знака form feed, экран очищается прежде, чем распечатывается этот файл. -u Обычно команда more осуществляет такое же подчеркивание, как при команде nroff, в том виде, который соответствует данному терминалу: если терминал может делать подчеркивание или имеет режим выделения, то выходные данные команды more соответствуют escape последовательностям для разрешения подчеркивания или режима выделения для подчеркнутого текста в исходном файле. Опция -u подавляет такую обработку. -r Обычно, команда more игнорирует управляющие символы, которые она не интерпретирует некоторым образом. Под действием опции -r эти символы отображаются как ^C, где стоит "С" для любого такого символа. -w Обычно, команда more завершает работу при подходе к концу своих входных данных. А под действием опции w, однако, команда more запрашивает пользователя и ждет нажатия любой клавиши перед завершением работы. +linenumber

Команда more стартует со строки с номером linenumber (номер строки). +/pattern

Команда more cтартует просмотр текста за две строки до той строки, в которой содержится регулярное выражение pattern (шаблон). <


/p>

Команда more просматривает файл /etc/ termcap для определения характеристик терминала и для определения установленного по умолчанию размера окна. Для терминала, отображающего 24 строки, размер окна по умолчанию составляет 22 строки.

Команда more просматривает переменную среды MORE для предварительной установки любых желаемых флагов. Например, если вы предпочитаете просматривать файлы, используя режим работы -с, то команда "МORE=-с" интерпретатора shell в файле .profile обеспечивает все обращения к команде more для реализации этого режима.

Если команда more считывается из файла, а не из программного канала, вслед за приглашением "--MORE--" высвечивается процентное соотношение. Оно показывает, какая часть данного файла (в символах, а не в строках) уже прочитана.

Другие последовательности, которые могут быть введены в паузах команды more, а также их действия, приведены ниже (i - это необязательный целый аргумент, по умолчанию равен 1 ):
i<space>Отображает еще i строк (или другой полный экран, если не задан аргумент). Ctrl-D Отображает еще 11 строк ("scroll" - прокрутка экрана). Если аргумент i задан, то размер прокручиваемых строк устанавливается равным i. d Тоже, что и под действием Ctrl-D. i z Тоже, что и при вводе space (пробел), при этом i, если оно указано, становится новым размером окна. i s Пропускает i строк и выводит полный экран строк. i f Пропускает i полных экранов и выводит полный экран. q или Q Выходит из команды more. = Выводит номер текущей строки. v Стартует экранный редактор vi на текущей строке. Заметим, что vi может быть не доступен вашей системе. h или ? Вспомогательная команда (help). Дает описание всех команд more. i/expr Отыскивает i-ое появление регулярного выражения expr. Если выражение expr встретилось менее i раз, и входные данные представляют собой файл (а не программный канал), то позиция в файле остается без изменений. В противном случае, высвечивается полный экран, начиная на две строки выше того места, где было найдено регулярное выражение. Можно использовать пользовательские символы стирания и уничтожения для редактирования регулярного выражения. Стирание последней встретившейся первой колонки отменяет команду поиска. i n Осуществляет поиск i-го появления последнего введенного регулярного выражения. ' (Одиночная кавычка) Возвращается к точке, с которой был начат последний поиск. Если в текущем файле поиск не проводился, эта команда возвращает вас к началу файла. !commmand Подключает интерпретатор shell с командой command. Символы % и ! в "command" заменяются на текущее имя файла и предыдущую команду shell соответственно. Если текущее имя файла отсутствует, то знак % не раскрывается. Последовательности "\%" и "\!" заменяются на "%" и "!" соответственно. i:n Переходит к следующему i-му файлу, заданному в ко мандной строке (переходит к последнему файлу, если i не указано). i:p Переходит к предыдущему i-му файлу , заданному в командной строке. Если эта команда задана в середине распечатывания файла, команда more возвращается к началу файла. Если i не задано, команда more переходдит к первому файлу. Если команда more не считывается из файла, то звенит звонок и ничего больше не происходит. :f Высвечивает текущее имя файла и номер строки. :q или :Q Выходит из команды more ( также как q или Q). . Повторяет предыдущую команду. <



/p>

Команды начинают действовать немедленно. Нет необходимости нажимать клавишу возврата каретки. До того момента, когда задан сам командный символ, пользователь может ввести символ уничтожения строки для отмены сформированного численного аргумента. Кроме того, пользователь может ввести символ стирания для повторной высветки сообщения "--More--(1xx0%)".

Этой программой терминал устанавливается в режим noecho (неотображаемая передача), так что процесс вывода может быть непрерывным. За исключением команд (/) и (!), то, что вы вводите, не будет показано на терминале.

Если стандартное устройство вывода не является телетайпом, команда more действует почти также, как команда cat, за исключением того, что заголовок печатается перед каждым файлом (если их несколько).

В качестве примера использования команды more можно привести следующий вывод с предварительным просмотром посредством команды nroff:

nroff -ms +2 doc.n | more -s

ФАЙЛЫ

/etc/termcap База данных терминала /usr/lib/more.help Файл подсказки (help)

СМ. ТАКЖЕ

, ,

РАЗРЕШЕНИЕ НА ИСПОЛЬЗОВАНИЕ

Эта утилита была разработана в Университете г.Беркли, шт.Калифорния и используется по разрешению.

ЗАМЕЧАНИЯ

Опции vi и help могут быть не доступны.

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









MOUNT(1M)


НАЗВАНИЕ

mount, umount - монтирование и размонтирование файловых систем и удаленных ресурсов

СИНТАКСИС

/etc/mount [[-r] [-f тип_фс] файловая_система каталог] /etc/mount [[-r] [-d] ресурс каталог] /etc/umount файловая_система /etc/umount [-d] ресурс

ОПИСАНИЕ

Файловые системы, отличные от корневой (/), считаются сменяемыми в том смысле, что они могут быть как доступны, так и не доступны пользователям. Команда mount делает доступной пользователям файловую_систему, заданную именем содержащего ее специального файла, или удаленный ресурс. Файловая_система или ресурс монтируются на указанный каталог, который должен существовать. Его имя становится именем корня смонтированной системы, а к файлу /etc/mnttab добавляется соответствующая запись (она будет удалена по команде umount).

При обращении к mount без аргументов на стандартный вывод выдается содержимое таблицы смонтированных файловых систем /etc/mnttab. Если список аргументов команды mount не полон, недостающие аргументы извлекаются из файла /etc/fstab.

Допускаются следующие опции:

-r Выполняется монтирование только на чтение. Если файловая_система или ресурс защищены от записи, эту опцию нужно указать обязательно. -d Ресурс является удаленным ресурсом, который должен быть смонтирован или размонтирован. Для монтирования удаленного ресурса необходимо, чтобы были доступны процедуры РУФ (разделение удаленных файлов). -f тип_фс

Опция задает тип монтируемой файловой системы. Если данный аргумент опущен, используется тип корневой файловой системы.

Команда umount выполняет размонтирование файловой_системы или ресурса, то есть делает их недоступными. Если при обращении список аргументов не полон, umount ищет недостающие аргументы в файле /etc/fstab.

ФАЙЛЫ

/etc/mnttab Таблица смонтированных файловых систем. /etc/fstab Таблица файловых систем.

СМ. ТАКЖЕ

, .

, , , в Справочнике программиста.

ДИАГНОСТИКА

Если системный вызов завершается неудачей, mount печатает соответствующую диагностику. Выдается предостережение, если монтируемая файловая система в данный момент уже смонтирована под другим именем. Подключение удаленного ресурса закончится неудачей, если данный ресурс не доступен, либо РУФ не работает.

Команда umount завершается неудачей, если файловая_система или ресурс не смонтированы или заняты. Файловая_система или ресурс считаются занятыми, если они содержат открытый файл или рабочий каталог какого-либо пользователя. Если это так, можно воспользоваться командой , чтобы просмотреть список соответствующих процессов.

ПРЕДОСТЕРЕЖЕНИЯ

Не вынимайте дискету со смонтированной файловой системой из дискового устройства до тех пор, пока не выполнена команда umount: это приведет к повреждению файловой системы.



MOUNT(2)


НАЗВАНИЕ

mount - монтирование файловой системы

СИНТАКСИС

#include <sys/mount.h>

int mount (spec, dir, mflag, fstyp) char *spec, *dir; int mflag, fstyp;

ОПИСАНИЕ

Системный вызов mount обслуживает запросы на монтирование (подключение) к каталогу с именем dir сменной файловой системы, которая содержится в специальном блочном файле с именем spec. Аргументы spec и dir являются указателями на маршрутные имена; fstyp - номер типа файловой системы. Чтобы определить номер типа файловой системы, можно воспользоваться системным вызовом . Отметим, что если бит MS_FSS аргумента mflag сброшен, тип файловой системы будет считаться совпадающим с типом корневой файловой системы. Аргумент fstyp принимается во внимание только при установленном бите MS_FSS.

После успешного завершения данного вызова ссылки на файл dir будут равносильны ссылкам на корневой каталог смонтированной файловой системы.

Младший бит аргумента mflag используется для управления правом на запись в смонтированную файловую систему. Если он равен 1, запись запрещена; в противном случае запись разрешена, если есть соответствующее право доступа к отдельному файлу.

Mount может быть вызван только суперпользователем. Предполагается, что он используется только утилитой .

Системный вызов mount завершается неудачей, если выполнено хотя бы одно из следующих условий:

[EPERM] Действующий идентификатор пользователя не является идентификатором суперпользователя. [ENOENT] Какой-либо из указанных файлов не существует. [ENOTDIR] Компонент маршрута не является каталогом. [EREMOTE] Spec является удаленным устройством и не может быть смонтирован. [ENOLINK] Аргумент path указывает на удаленный компьютер, связи с которым в данный момент нет. [EMULTIHOP] Компоненты path требуют многократного обращения к удаленным компьютерам. [ENOTBLK] Spec не является специальным блочным устройством. [ENXIO] Физическое устройство, соответствующее spec, не существует. [ENOTDIR] Dir не является каталогом. [EFAULT] Spec или dir указывает за пределы отведенного процессу адресного пространства. [EBUSY] Dir в данный момент смонтирован, является чьим-то текущим каталогом или занят каким либо иным образом. [EBUSY] Физическое устройство, соответствующее spec, в данный момент смонтировано. [EBUSY] Исчерпана таблица смонтированных файловых систем. [EROFS] Spec защищен от записи, а mflag требует права на запись. [ENOSPC] Состояние файловой системы в суперблоке не равно FsOKAY, а mflag требует права на запись. [EINVAL] Суперблок содержит некорректное магическое число, либо fstyp некорректен, либо mflag некорректен.

СМ. ТАКЖЕ

, , . в Справочнике администратора.

ДИАГНОСТИКА

При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.


Насторожитесь, если при нахождении в однопользовательском режиме команды, которые ищут в /etc/mnttab аргументы, используемые по умолчанию (например, df, ncheck, qout, mount и unmount) дают неправильные результаты (вследствие порчи /etc/mnttab из-за остановки системы без команды shutdown) или вообще не дают результатов (из-за пустого /etc/mnttab после выполнения shutdown).

В многопользовательском режиме это не составляет проблемы; /etc/rc инициализирует /etc/mnttab так, что тот содержит только /dev/root, и последующие монтировки модифицируют его соответствующим образом.

Команды и unmount(8) используют файл блокировки для обеспечения исключительного доступа к /etc/mnttab. Команды, которые просто читают его (они упомянуты выше) не делают этого, и поэтому может случиться, что они попадают в испорченное окно. На практике это не составляет проблемы, так как операции mount и unmount не слишком часто используются.

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

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









MOUNTALL(1M)


НАЗВАНИЕ

mountall, umountall - монтирование и размонтирование группы файловых систем

СИНТАКСИС

/etc/mountall [-] [таблица_файловых_систем ...] /etc/umountall [-k]

ОПИСАНИЕ

Описываемые команды могут быть выполнены только суперпользователем.

Команда mountall служит для того, чтобы смонтировать файловые системы в соответствии с таблицей_файловых_систем. По умолчанию в качестве таблицы используется файл /etc/fstab, а если задано "имя" -, то стандартный ввод.

Перед монтированием очередной файловой системы ее состояние проверяется посредством команды и, если состояние оказалось некорректным, запускается утилита .

Команда umountall выполняет размонтирование всех смонтированных файловых систем, за исключением корневой. Если указана опция -k, то всем процессам, имеющим открытые файлы, посредством команды посылается сигнал уничтожения SIGKILL.

ФАЙЛЫ

Строки файла - таблицы_файловых_систем - содержат следующие поля:

Имя специального блочного файла, содержащего файловую систему. Каталог, на который монтируется файловая система. -r монтировать с доступом только на чтение. (Необязательное поле.) Цепочка символов, задающая тип файловой системы. Это и последующие поля игнорируются.

Поля отделяются друг от друга пробелами. Строки, начинающиеся с символа #, являются комментариями. Пустые строки игнорируются.

Типичный пример таблицы файловых систем:

/dev/dsk/hd0s1 /udd

СМ. ТАКЖЕ

, , , , .

, в Справочнике программиста.

ДИАГНОСТИКА

Если файловые системы в нормальном состоянии и могут быть смонтированы, никаких сообщений не выдается.

Сообщения об ошибках и предостережения исходят от команд , и .



Mountd


НАЗВАНИЕ

mountd - сервер монтирований в среде NFS

СИНТАКСИС

/etc/mountd

ОПИСАНИЕ

Mountd является сервером, который отвечает на вопросы, касающиеся монтирования файловых систем. На основании информации файла /etc/exports, описанного в , он определяет, какие файловые системы доступны тем или иным машинам и пользователям. Он также располагает данными о том, кем из клиентов были смонтированы файловые системы. Эта информация выводится по команде .

СМ. ТАКЖЕ

, services(8),



MOUSE(HW)


НАЗВАНИЕ

mouse - манипулятор "мышь"

ОПИСАНИЕ

Использование "мыши" под управлением системы UNIX обеспечивается через посредство следующих специальных файлов устройств:

/dev/mouse

Каталог для специальных файлов, относящихся к "мыши". /dev/mouse/bus[0-1]

Файлы "мыши", присоединяемой к шине. /dev/mouse/vpix[0-1]

Файлы "мыши" vpix. /dev/mouse/microsoft_ser

Файлы "мыши", присоединяемой к последовательному порту, фирмы Microsoft. /dev/mouse/logitech_ser

Файлы "мыши", присоединяемой к последовательному порту, фирмы Logitech. /dev/mouse/mousesys_ser

Файлы "мыши", присоединяемой к последовательному порту, фирмы Mousesys. /dev/mouse/ttyp[0-7]

Специальные файлы псевдотерминалов для ввода с "мыши". /etc/default/usemouse

Файл таблицы параметров, устанавливаемых по умолчанию, для генерации кодов "мыши". /usr/lib/event/devices

Файл, содержащий информацию о "мыши". /usr/lib/event/ttys

Файл, перечисляющий терминалы пригодные для работы с "мышью". /usr/lib/mouse/*

Файлы альтернативных таблиц для устройств типа "мышь".

Система UNIX поддерживает манипуляторы типа "мышь", присоединяемые непосредственно к платам контроллеров шины или через стандартные последовательные порты. Команда:

mkdev mouse

используется для установки конфигурации новой "мыши" или переустановки конфигурации существующей "мыши".

СМ. ТАКЖЕ

mkdev(8), usemouse(1)



MPCC(7)


НАЗВАНИЕ

mpcc - последовательный драйвер

ОПИСАНИЕ

Драйвер mpcc предназначен для мультипротокольного коммуникационного контроллера, используемого в платах последовательного ввода/вывода и системного арбитра. Драйвером поддерживаются асинхронные устройства типа принтеров со следующими характеристиками: скорость передачи от 50 до 9600 бод, размер символа: 5 - 8 бит, контроль на четность/нечетность или без контроля четности, один или два стоп-бита.

ФАЙЛЫ


/dev/lp Последовательный интерфейс на плате системного арбитра.



MRD(1)


ИМЯ

mrd - перемещает директорию MSDOS

СИНТАКСИС

mrd [ -v ] msdosdirectory [ msdosdirectories... ]

ОПИСАНИЕ

Mrd перемещает директорию в файлов системе MSDOS.

v Режим сообщений. Показывает имя директории после переноса.

Возникает сообщение об ошибке если директория не существует или если она не пуста.

СМ. ТАКЖЕ

mtools(1), , mdeltree(1)



MREAD(1)


ИМЯ

mread - чтение (копирование) файла MSDOS в UNIX

СИНТАКСИС

mread [ -tnvmoOsSrRA ] msdosfile unixfile mread [ -tnvmoOsSrRA ] msdosfile [ msdosfiles... ] unixdirectory

ОПИСАНИЕ

Эта команда устарела, и остается только для совместимости со старыми записями. Старайтесь использовать mcopy.

СМ. ТАКЖЕ

mcopy(1), , mtools(1)



MREN(1)


ИМЯ

mmove - перемещает или переименовывает файлы и директории MSDOS.

СИНТАКСИС

mmove [ -voOsSrRA ] sourcefile targetfile mmove [ -voOsSrRA ] sourcefile [ sourcefiles... ] target-directory

ОПИСАНИЕ

Mmove перемещает или переименовывает файлы и директории MSDOS.

v Режим сообщений.

Остальные опции командной строки описаны в руководстве к команде mtools.

СМ. ТАКЖЕ

mtools(1)



MSCREEN(7)


НАЗВАНИЕ

mscreen - Утилита последовательных мультиэкранов

СИНТАКСИС

mscreen [-s] [-n number] [-t]

ОПИСАНИЕ

mscreen допускает последовательный терминал для того, чтобы иметь множественные входные экраны аналогично управлению .

Замечание: Для полной поддержки mscreen терминал дожен иметь возможность переключать внутренние страницы экрана по команде и должен сохранять отдельную позицию курсора для каждой страницы экрана.

Параметры используются следующим образом:

-sРежим подавления вывода сообщений. Этот флаг поддерживает сообщения при запуске, и на "немых" терминалах он поддерживает сообщения о переключателе экрана. -nВыбирает число последовательных мультиэкранов, сведенных к максимальному числу, определенному для данного типа терминала. -tДелает невозможной непосредственную проверку tty. Как правило, mscreen входит без объявления, если имя терминального устройства начинается с символов "ttyp". Имена устройств, начинающиеся с "ttyp", используются как починенные устройства для mscreen. Правильные имена для управляющих устройств tty начинаются с "ptyp".

mscreen может быть использован как на "интеллектуальных", так и на "немых" терминалах. Хотя он оптимизирован так, чтобы работать преимущественно с "интеллектуальными терминалами" с экранной памятью, mscreen также работает на немых терминалах, хотя при изменениях экрана изображения экрана не сохраняются. mscreen также поддерживает терминалы с двумя (или более) последовательными портами, подсоединенными к различным компьютерам.

mscreen сконструирована так, чтобы она вызывалась из файлов .profile или .login. Следует использовать mscreen вместо переменной SHELL, чтобы последовательные мультиэкраны последовательно включались во время ввода. Клавиши "stp" и "quit" позволяют выйти из всех экранов с посмощью одного удара клавиши.

Конфигурация

Анализируя переменную среды TERM, mscreen определяет вид терминала, из которого она вызывалась. Чтобы получить возможности для данного вида терминала, mscreen просматривает /etc/mscreencp или имя файла, содержащееся в переменной среды SPTTERMCAP.


Псевдотерминалы, приписанные пользователю, автоматически определяются mscreen при запуске. Присваивание ttys вручную может быть выполнено путем создания файла .mscreenrc в начальном каталоге пользователя.

Формат mscreencap

mscreencap содержит вход для каждого поддерживаемого вида терминала. Если поддержка для нескольких видов терминала одинакова, вход может иметь несколько имен. Внутри входа имеются отображения клавиш для каждого потенциального псевдотерминала. Каждый псевдотерминал имеет строку клавиши help, входную строку (последовательность с генерированной клавишей, выбирающей данный экран), и произвольная выходная строка (последовательность, посылаемая терминалу для включения страницы). Входная и выходная строки находятся в формате типа termcap: (backslash и возврат каретки являются руководящими в (управляющих) символах).

\nnnвосьмеричное число, допускается от одного до трех цифр \nновая строка \rвозвращение каретки \tсимвол табуляции \bbackspace \fform feed \Eпереход (от шестнадцатиричного 1b к восьмиричному 33) \ввести backslash в качестве символа данных \^нажать на каретку как символ данных \^Xctrl-X, где Х может быть: @ABCDEFGHIJKLMNOPQRSTUVWXYZ []^_полезно то, что каретка может порождать шестнадцатиричное 01 через шестнадцатиричное 1f. Если вид терминала не имеет выходных строк, то он считается "немым" терминалом, не имеющим множественных внутренних страниц памяти.

Существует пять особых входов, позволяющих пользователю определять клавиши для поддержки других функций mscreen. Это клавиша help (которая печатает список всех доступных в настоящее время клавиш и их функций), клавиша who (печатает имя текущего экрана), клавиша stop (прекращает mscreen и возвращает хороший (нулевой) возвратный код оболочки), и клавиша quit (прекращает mscreen и возвращает плохой (ненулевой) возвратный код оболочки), и немой вход, используемый для терминалов с множественными портами.

Формат:

#это комментарий и может появляться только между вводами



entryname|alias1|alias1...|aliasn: :specialname,helpname,inputstring,pageselectstring: :specialname,helpname,inputstring,pageselectstring: entryname|alias1|alias1...|aliasn: :specialname,helpname,inputstring,pageselectstring: :specialname,helpname,inputstring,pageselectstring:

specialname пусто для вводов с действительного экрана. Посмотрите пример для /etc/mscreencap 1.

.mscreen format

Фиксированный набор ttys для использования:

tty0 tty1 ttyn

Возвращенные коды оболочки и автоматический ввод/вывод

mscreen выходит с плохим (ненулевым) возвратным кодом при наличии ошибки или при нажатии клавиши "quit". Клавиша stop вызывает выход mscreen с хорошим нулевым возвратным кодом. Это позволяет пользователям помещать mscreen в файлы .profile и .login. Если возвратный код mscreen хороший (нулевой), файлы .profile и .login должны устанавливать автоматический выход. Ниже показан вызов выборки csh mscreen для файла .login.

mscreen -n4 if ($status==0)logout

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

Опция множественного порта

mscreen обеспечивает вид немого входа. Он разрешает помещать mscreen в неактивное состояние, а пока пользователь использует свой терминал для проникновения через другой (физический) порт ввода/вывода в другой компьютер. Например, смотри /etc/mscreentermmap. Для использования вы должны взять пример и составить его для своих целей.

Драйвер mscreen

Драйвер mscreen уже внедрен в ядро XENIX с восемью псевдотерминалами, доступными для использования. Чтобы использовать его, вам следует включить псевдотерминалы. Чтобы иметь больше доступных псевдотерминалов, следует ознакомиться с инструкциями link-kit для повторного подсоединения ядра.

ПРИМЕЧАНИЕ

Для входных строк mscreen имеет истечение времени ожидания события VTIM, равное 1/5 секунды.

На каждого пользователя mscreen имеет предел в 20 мультиэкранов.



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

Терминалы, сохраняющие положение курсора для каждого экрана, часто не сохраняют такие состояния, как режим вставки, обратный видео и другие. Например, не следует менять экраны, если вы находитесь в режиме вставки в vi, и вам не следует менять экраны во время выходной последовательности обратного видео.

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

mscreen зависит от имен утройства псевдотерминала, начинающихся с ttyp для зависимых устройств и ptyp для управляющих устройств. Количество последних символов в имени устройства несущественно.

СМ. ТАКЖЕ

,









MSGCTL(2) MSGCTL(2)


НАЗВАНИЕ

msgctl - операции управления очередью сообщений

СИНТАКСИС

#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>

int msgctl (msqid, cmd, buf) int msqid, cmd; struct msqid_ds *buf;

ОПИСАНИЕ

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

IPC_STAT Поместить текущее значение каждого поля структуры данных, ассоциированной с идентификатором очереди сообщений msqid, в структуру, на которую указывает buf. Содержимое структуры описано в . {Требуется право на чтение.} IPC_SET Присвоить следующим полям структуры данных, ассоциированной с идентификатором msqid, соответствующие значения, находящиеся в структуре, на которую указывает buf:

msg_perm.uid msg_perm.gid msg_perm.mode /* Только младшие 9 бит */ msg_qbytes

Это действие может выполняться только процессом, действующий идентификатор пользователя которого равен либо идентификатору суперпользователя, либо значению поля msg_perm.cuid или msg_perm.uid в структуре данных, ассоциированной с msqid. Только суперпользователь может увеличивать значение поля msg_qbytes. IPC_RMID Удалить из системы идентификатор очереди сообщений, определяемый значением msqid, ликвидировать очередь сообщений и ассоциированную с ней структуру данных. Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля msg_perm.cuid или msg_perm.uid в структуре данных, ассоциированной с msqid.

Системный вызов msgctl завершается неудачей, если выполнено хотя бы одно из следующих условий:

[EINVAL] Значение аргумента msgid не является корректным идентификатором очереди сообщений. [EINVAL] Некорректное значение аргумента cmd, определяющее выполняемое действие. [EACCES] Значение аргумента cmd равно IPC_STAT и нет прав на чтение у вызывающего процесса[см. ]. [EPERM] Значение аргумента cmd равно IPC_RMID или IPC_SET и действующий идентификатор пользователя вызывающего процесса не равен ни идентификатору суперпользователя, ни значению поля msg_perm.cuid или msg_perm.uid в структуре данных, ассоциированной с msqid. [EPERM] Значение аргумента cmd равно IPC_SET и была предпринята попытка увеличить значение поля msg_qbytes, а действующий идентификатор пользователя вызывающего процесса не равен идентификатору суперпользователя. [EFAULT] Аргумент buf указывает за пределы отведенного процессу адресного пространства.

СМ. ТАКЖЕ

, , .

ДИАГНОСТИКА

При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.



MSGGET(2)


НАЗВАНИЕ

msgget - получение идентификатора очереди сообщений

СИНТАКСИС

#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>

int msgget (key, msgflg) key_t key; int msgflg;

ОПИСАНИЕ

Системный вызов msgget возвращает идентификатор очереди сообщений, ассоциированный с ключом key.

Идентификатор очереди сообщений и ассоциированные с ним очередь и структура данных [см. ] создаются для ключа key в следующих случаях:

Значение аргумента key равно IPC_PRIVATE. Ключ key еще не имеет ассоциированного с ним идентификатора очереди сообщений и выражение (msgflg & IPC_CREAT) истинно.

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

Значения полей msg_perm.cuid, msg_perm.uid, msg_perm.cgid и msg_perm.gid устанавливаются равными действующему идентификатору пользователя и, соответственно, действующему идентификатору группы вызывающего процесса. Младшие 9 бит поля msg_perm.mode устанавливаются равными 9 младшим битам аргумента msgflg. Значения полей msg_qnum, msg_lspid, msg_lrpid, msg_stime и msg_rtime устанавливаются равными 0. Значение поля msg_ctime устанавливается равным текущему времени. Значение поля msg_qbytes устанавливается равным системному лимиту.

Системный вызов msgget завершается неудачей, если выполнено хотя бы одно из следующих условий:

[EACCES] Для ключа key уже существует идентификатор очереди сообщений, но не могут быть предоставлены права доступа, определенные в 9 младших битах аргумента msgflg. [ENOENT] Для ключа key не существует идентификатор очереди сообщений и выражение (msgflg & IPC_CREAT) ложно. [ENOSPC] Идентификатор очереди сообщений должен быть создан, но тогда будет превышено максимально допустимое количество идентификаторов в системе. [EEXIST] Для ключа key уже существует идентификатор очереди сообщений и выражение ((msgflg & IPC_CREAT) & (msgflg & IPC_EXCL)) истинно.

СМ. ТАКЖЕ

, , .

ДИАГНОСТИКА

При успешном завершении системного вызова возвращается неотрицательное целое число - идентификатор очереди сообщений. В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.



MSGGET(3) XENIX System V (21 июня 1987)


ИМЯ

msgget - coздaeт oчepeдь cooбщeний

СИНТАКСИС

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/msg.h>

int msgget (key, msgflg) key_t key; int msgflg;

ОПИСАНИЕ

msgget для зaдaннoгo key вoзвpaщaeт идeнтификaтop oчepeди cooбщeний.

Идeнтификaтop oчepeди cooбщeний, cвязaнныe c ним oчepeдь и cтpyктypa дaнныx (cм. ) coздaютcя для дaннoгo key, ecли выпoлняeтcя oднo из cлeдyющиx ycлoвий:

key paвeн IPC_PRIVATE.

key нe имeeт cвязaннoгo c ним идeнтификaтopa oчepeди cooбщeний и (msgflg&IPC_CREAT) oтличнo oт нyля.

Пoля cтpyктypы дaнныx, cвязaннoй c нoвым идeнтификaтopoм oчepeди cooбщeний, инициaлизиpyютcя cлeдyющим oбpaзoм:

msg_perm.cuid и msg_perm.uid ycтaнaвливaютcя paвными эффeктивнoмy пoльзoвaтeльcкoмy ID тeкyщeгo пpoцecca. msg_perm.cgid и msg_perm.gid ycтaнaвливaютcя paвными эффeктивнoмy гpyппoвoмy ID тeкyщeгo пpoцecca.

Mлaдшиe 9 бит msg_perm.mode ycтaнaвливaютcя paвными млaдшим 9-ти битaм msgflg.

msg_qnum, msg_lspid, msg_lrpid и msg_rtime ycтaнaвливaютcя paвными 0.

msg_ctime ycтaнaвливaeтcя paвным тeкyщeмy вpeмeни.

msg_qbytes ycтaнaвливaeтcя paвным cиcтeмнoмy oгpaничeнию.

msgget aвapийнo зaвepшaeтcя, ecли выпoлняeтcя xoтя бы oднo из cлeдyющиx ycлoвий:

[EACCES] Идeнтификaтop oчepeди cooбщeний cyщecтвyeт для key, нo пpaвa, зaдaнныe млaдшими 9-ью битaми msgflg, нe мoгyт быть пpeдocтaвлeны (cм. ). [ENOENT] Идeнтификaтop oчepeди cooбщeний нe cyщecтвyeт для key и (msgflg&IPC_CREAT) paвнo 0. [ENOSPC] Идeнтификaтop oчepeди cooбщeний нe мoжeт быть coздaн ввидy oгpaничeния нa oбщee чиcлo тaкиx идeнтификaтopoв в cиcтeмe. [EEXIST] Идeнтификaтop oчepeди cooбщeний cyщecтвyeт для key, нo (msgflg&IPC_CREAT)&(msgflg&IPC_EXCL) oтличнo oт 0.

BOЗВPAЩAEМOE ЗНAЧEНИE

B cлyчae ycпeшнoгo зaвepшeния вoзвpaщaeтcя идeнтификaтop oчepeди cooбщeний кaк нeoтpицaтeльнoe цeлoe чиcлo. Инaчe вoзвpaщaeтcя знaчeниe -1 и в errno зaнocитcя кoд oшибки.

СМ. ТАКЖЕ

, msgctl(3), msgop(3)

ЗAМEЧAНИЯ

Пpoгpaммa, иcпoльзyющaя этy фyнкцию, дoлжнa кoмпилиpoвaтьcя c флaгoм -Me.



MSGOP(2)


НАЗВАНИЕ

msgop - операции над очередью сообщений

СИНТАКСИС

#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>

int msgsnd (msqid, msgp, msgsz, msgflg) int msqid; struct msgbuf *msgp; int msgsz, msgflg;

int msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) int msqid; struct msgbuf *msgp; long msgtyp; int msgsz, msgflg;

ОПИСАНИЕ

Посылка сообщения

Системный вызов msgsnd используется для того, чтобы поместить сообщение в очередь, ассоциированную с идентификатором очереди msqid. {Требуется право на запись.} Аргумент msgp является указателем на структуру, содержащую сообщение. Структура содержит следующие поля:

long mtype; /* Тип сообщения */ char mtext []; /* Текст сообщения */

Поле mtype содержит положительное целое число, которое может использоваться процессом-получателем для выбора сообщений (см. ниже описание системного вызова msgrcv). Поле mtext содержит текст длиной msgsz байт. Аргумент msgsz может принимать значения от 0 до установленного системой лимита.

Аргумент msgflg специфицирует действия, предпринимаемые, если выполнено хотя бы одно из следующих условий:

Текущее количество байт в очереди уже равно значению поля msg_qbytes ассоциированной структуры данных [см. ]. Общее количество сообщений во всех очередях системы равно максимально допустимому системой.

Действия, специфицируемые аргументом msgflg, следующие:

Если выражение (msgflg & IPC_NOWAIT) истинно, то сообщение не посылается и вызывающему процессу сразу же возвращается управление. Если выражение (msgflg & IPC_NOWAIT) ложно, то выполнение вызывающего процесса задерживается до тех пор, пока не произойдет одно из следующих событий:

Условие, определяющее задержку процесса, перестает существовать; в этом случае посылается сообщение. Идентификатор очереди сообщений msqid удаляется из системы [см. ]; в этом случае errno присваивается значение EIDRM и в качестве результата возвращается -1. Вызывающий процесс получает сигнал, который должен быть обработан; в этом случае сообщение не посылается и вызывающий процесс продолжает выполнение так, как описано в .


Системный вызов msgsnd завершается неудачей и сообщение не посылается, если выполнено хотя бы одно из следующих условий:

[EINVAL] Идентификатор очереди сообщений msqid не является корректным. [EACCES] У вызывающего процесса нет прав на выполнение операции [см. ]. [EINVAL] Значение поля mtype меньше 1. [EAGAIN] Сообщение не может быть послано по какой либо из описанных выше причин, и выражение (msgflg & IPC_NOWAIT) истинно. [EINVAL] Значение аргумента msgsz меньше 0 или больше максимально допустимого в системе. [EFAULT] Аргумент msgp указывает за пределы отведенного процессу адресного пространства.

При успешном выполнении вызова над структурой данных, ассоциированной с идентификатором msqid, производятся следующие действия [см. ]:

Значение поля msg_qnum увеличивается на 1. Значение поля msg_lspid устанавливается равным идентификатору (номеру) вызывающего процесса. Значение поля msg_stime устанавливается равным текущему времени.

Прием сообщения

Системный вызов msgrcv получает сообщение из очереди, ассоциированной с идентификатором очереди msqid, и помещает его в структуру, на которую указывает аргумент msgp. {Требуется право на чтение.} Эта структура состоит из следующих полей:

long mtype; /* Тип сообщения */ char mtext []; /* Текст сообщения */

Поле mtype содержит тип получаемого сообщения, который специфицируется посылающим процессом. Поле mtext содержит текст сообщения. Значение аргумента msgsz определяет размер текста в байтах. Получаемое сообщение обрезается до msgsz байт, если его длина превышает msgsz и выражение (msgflg & MSG_NOERROR) истинно. Отброшенная часть сообщения пропадает и вызывающий процесс не получает никакого уведомления об обрезании.

Аргумент msgtyp специфицирует тип запрашиваемого сообщения в соответствии со следующими соглашениями:

Если значение msgtyp равно 0, требуется первое сообщение в очереди. Если значение msgtyp больше 0, требуется первое сообщение типа msgtyp. Если значение msgtyp меньше 0, требуется первое сообщение наименьшего из типов, которые меньше или равны абсолютной величине аргумента msgtyp.



Аргумент msgflg специфицирует действия, предпринимаемые в том случае, если в очереди нет сообщения нужного типа. Эти действия следующие:

Если выражение (msgflg & IPC_NOWAIT) истинно, то вызывающий процесс сразу же получает управление, ему возвращается -1 и errno присваивается значение ENOMSG. Если выражение (msgflg & IPC_NOWAIT) ложно, то выполнение вызывающего процесса приостанавливается до тех пор, пока не произойдет одно из следующих событий:

В очереди появляется сообщение нужного типа. Идентификатор очереди сообщений удаляется из системы; в этом случае возвращается -1 и errno присваивается значение EIDRM. Вызывающий процесс получает сигнал, который должен быть обработан; в этом случае получения сообщения не происходит и вызывающий процесс возобновляет выполнение так, как описано в .

Системный вызов msgrcv завершается неудачей и сообщение не принимается, если выполнено хотя бы одно из следующих условий:

[EINVAL] Значение аргумента msgid не является корректным идентификатором очереди сообщений. [EACCES] У вызывающего процесса нет прав на выполнение операции. [EINVAL] Значение аргумента msgsz меньше 0. [E2BIG] Размер сообщения больше msgsz и выражение (msgflg & MSG_NOERROR) ложно. [ENOMSG] Очередь не содержит сообщения нужного типа и выражение (msgflg & IPC_NOWAIT) истинно. [EFAULT] Аргумент msgp указывает за пределы отведенного процессу адресного пространства.

При успешном выполнении вызова над структурой данных, ассоциированной с идентификатором msqid, производятся следующие действия [см. ]:

Значение поля msg_qnum уменьшается на 1. Значение поля msg_lrpid устанавливается равным идентификатору (номеру) вызывающего процесса. Значение поля msg_rtime устанавливается равным текущему времени.

СМ. ТАКЖЕ

, , msget(2), .

ДИАГНОСТИКА

Если описанные выше системные вызовы завершаются неудачей из-за получения сигнала, то вызывающему процессу возвращается -1, а переменной errno присваивается значение EINTR. Если системные вызовы завершаются неудачей из-за удаления из системы идентификатора очереди msqid, то возвращается -1 и errno присваивается значение EIDRM.

При успешном завершении системных вызовов возвращаются следующие значения:

Msgsnd возвращает 0. Msgrcv возвращает значение, равное количеству байт, действительно помещенных в поле mtext.

В иных случаях возвращается -1, а переменной errno присваивается код ошибки.









MTEST(1)


ИМЯ

mtest - тестирует файл конфигураций mtools

СИНТАКСИС

mtest

ОПИСАНИЕ

Mtest читает файл конфигураций mtools и выдает конфигурации на стандартный вывод. Вывод может быть использован для создания другого файла конфигураций (например на удаленной машине). Так же можно использовать эту программу для перевода файла конфигураций старого стиля в файл конфигураций нового стиля.

СМ. ТАКЖЕ

mtools(5)



MTOUT(1M)


НАЗВАНИЕ

mtout - буферизованый вывод на устройство /dev/qic

СИНТАКСИС

/etc/mtout

ОПИСАНИЕ

cpio и tar при копировании с диска на стриммер quc работают слишком медленно, так что стриммер простаивает. mtout читает свой стандартный ввод и выводит информацию в quc блоками по 256K, сокращая таким образом простои! Более того, последний блок также дополняется до указанной длины, т.е. с выходной стороны выполняется нечто в духе 'conv=sync', то, что dd сделать не может.

ФАЙЛ

/dev/qic

СМ. ТАКЖЕ

, , в Справочнике программиста.



MTYPE(1)


ИМЯ

mtype - показывает содержимое MSDOS файла

СИНТАКСИС

mtype [ -ts ] msdosfile [ msdosfiles... ]

ОПИСАНИЕ

Mtype выдает указанный файл MSDOS на экран.

t Просмотр текстовых файлов. s Вывод файла в виде побитовых данных.

Имена директорий MSDOS поддержаны разделителями "/" или "\".

Mtype возвращает 0 в случае успешного завершения и 1 или 2 в случае ошибки.

СМ. ТАКЖЕ

,

ПРИМЕЧАНИЯ

Допустимы несколько аргументов, что не поддерживается в MSDOS.



MULTISCREEN(7)


НАЗВАНИЕ

multiscreen - множественные экраны (файлы устройства)

СИНТАКСИС

alt-Fn alt-ctrl-Fn alt-shift-Fn alt-ctrl-shift-Fn

ОПИСАНИЕ

Обладая свойством multiscreen, пользователь может работать с двенадцатью различными "экранами", каждый из которых соответствует файлу отдельного устройства. Каждый экран может просматриваться на primary monitor.

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

Доступ

Для того чтобы посмотреть следующий последовательный экран, 1 введите:

Ctrl-PrtSc

Для того, чтобы двигаться в любом экране с любого другого экрана, ввидите:

alt-Fn или alt-ctrl-Fn или alt-shift-Fn alt-Fn или alt-ctrl-Fn (screens 1-12) alt-shift-Fn или alt-ctrl-shift-Fn (screens 11-16, 7-12)

где n - номер одной из функциональных клавиш "F" на клавиатуре главного монитора. Например:

alt-F2

выбирает tty12, и все выводы в буфере экрана этого устройства выдаются на экране монитора.

Вторая форма (использующая клавишу SHIFT) разрешает доступ на экраны 11 или 12 на клавиатуры, имеющие только десять функциональных клавиш. Также возможна конфигурация ядра для 16 экранов, но 12 есть по умолчанию.

Комбинации функциональных клавиш, используемых на разнообразных экранах, определяются в файле отображения клавиатуры. Для того чтобы изменить мультиэкраны, для разрешения различных комбинаций клавиш могут быть модифицированы /usr/lib/keyboard/ key и mapkey(8). Используйте утилиту mapkey для создания отображения новой кавиатуры.

ФАЙЛЫ


/dev/tty[01-12] устройства мультиэкранов (количество доступных зависит от системной памяти)

СМ. ТАКЖЕ

mapkey(8), keyboard(HW), screen(HW), serial(HW),

ПРИМЕЧАНИЯ

Сообщение об ошибке любой системы обычно выводится в файле устройства console. (dev/console). Когда выдается сообщение об ошибке, видеодисплей возвращается в файл устройства console, сообщение выдается на экране. Устройство console является только телетайпом, открытым во время последовательности начальной перезагрузки, или когда единственный пользователь, или в режиме системного обслуживания.

Ограничения количества мультиэкранов, доступных системе не влияет на количество последовательных строк или доступных устройств. Смотрите serial(7) для информации, на доступных последовательных устройствах.

Отметим, что для XENIX нажатия клавиш, представляемых здесь, происходит по умолчанию, а ваша клавиатура может быть различной. Если это так, для соответствующих замен смотрите keyboard(7). Также, любая клавиша может быть запрограммирована с помощью использования утилиты mapkey, для того чтобы сгенерировать последовательности переключения экрана.



MV(1)


НАЗВАНИЕ

mv - перемещение (переименование) файлов

СИНТАКСИС

mv [-f] файл1 [файл2 ...] целевой_файл

ОПИСАНИЕ

Команда mv перемещает (переименовывает) файл1 в целевой_файл. Файл1 не должен совпадать с целевым_файлом (будьте внимательны при использовании метасимволов shell'а). Если целевой_файл является каталогом, то файл1, файл2, ..., перемещаются в него под своими именами. Только в этом случае можно указывать несколько исходных файлов.

Если целевой_файл существует и не является каталогом, его старое содержимое теряется. Если при этом обнаруживается, что в целевой_файл не разрешена запись, то выводится режим этого файла [см. ] и запрашивается строка со стандартного ввода. Если эта строка начинается с символа y, то требуемые действия все же выполняются, при условии, что у пользователя достаточно прав для удаления целевого_файла. Если была указана опция -f или стандартный ввод назначен не на терминал, то требуемые действия выполняются без всяких запросов. Вместе с содержимым целевой_файл наследует режим файла1.

Если файл1 является каталогом, то он переименовывается в целевой_файл, только если у этих двух каталогов общий надкаталог; при этом все файлы, находившиеся в файле1, перемещаются под своими именами в целевой_файл. Если файл1 является файлом, а целевой_файл - ссылкой, причем не единственной, на другой файл, то все остальные ссылки сохраняются, а целевой_файл становится новым независимым файлом.

СМ. ТАКЖЕ

, , , .

СЮРПРИЗЫ

Если файл1 и целевой_файл лежат на разных файловых системах, то команда mv копирует файл1, а затем удаляет оригинал; если файл1 был ссылкой, то целевой_файл ссылкой быть не сможет.



MVDIR(1M)


НАЗВАНИЕ

mvdir - перемещение каталога

СИНТАКСИС

/etc/mvdir исходный_каталог целевой_каталог

ОПИСАНИЕ

Команда mvdir перемещает каталоги в пределах файловой системы. Если целевой_каталог не существует, он создается; в противном случае создается каталог с именем целевой_каталог/исходный_каталог. Исходный и целевой каталоги не могут лежать на одном маршруте, то есть ни один из них не может быть прямым или косвенным подкаталогом другого. Так, команда

mvdir x/y x/z

допустима, а команда

mvdir x/y x/y/z

ошибочна.

СМ. ТАКЖЕ

, в Справочнике пользователя.

ПРЕДОСТЕРЕЖЕНИЯ

Команду mvdir может выполнять только суперпользователь



MVDIR(8)


НАЗВАНИЕ

mvdir - осуществляет перенос каталога.

СИНТАКСИС

/etc/mvdir dirname name

ОПИСАНИЕ

mvdir перемещает каталоги внутри файловой системы. Имя dirname должно представлять каталог. Если уже имеется каталог или файл с именем name, то выполнение mvdir терпит крах.

Никакое задаваемое имя не должно быть частью другого имени. Например, нельзя переносить каталог с именем /x/y в /x/y/z и наоборот.

ПРИМЕЧАНИЯ

Для использования mvdir вы должны быть привилегированным пользователем.

СМ. ТАКЖЕ



MWRITE(1)


ИМЯ

mwrite - низкоуровневая запись (копирование) файлов Unix в MSDOS

СИНТАКСИС

mwrite [ -tnvmoOsSrRA ] unixfile msdosfile mwrite [ -tnvmoOsSrRA ] unixfile [ unixfiles... ] msdosdirectory

ОПИСАНИЕ

Эта команда устарела, и остается только для совместимости со старыми записями. Старайтесь использовать mcopy.

СМ. ТАКЖЕ

mcopy(1), mtools(1)



QSORT(3C)


НАЗВАНИЕ

qsort - быстрая сортировка

СИНТАКСИС

void qsort ((char *) base, nel, sizeof (*base), compar) unsigned int nel; int (*compar) ( );

ОПИСАНИЕ

Процедура qsort реализует алгоритм быстрой сортировки таблицы данных на своем месте.

Аргумент base является указателем на начало таблицы. Nel - число элементов в таблице. Compar - функция сравнения, аргументами которой при вызове служат два указателя на сравниваемые элементы. В соответствии с тем, какое целое число она возвращает: меньшее нуля, равное нулю или большее нуля, первый аргумент считается меньшим, равным или большим по отношению ко второму.

ПРИМЕЧАНИЯ

Указатель на начало таблицы должен иметь тип "указатель на элемент" и преобразовываться к типу "указатель на символ".

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

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

СМ. ТАКЖЕ

, , .

в Справочнике пользователя