Man pages на русском

         

НАЗВАНИЕ

gethostent, gethostbyaddr, gethostbyname, sethostent, endhostent - получить сведения о главной сетевой машине

СИНТАКСИС

#include <netdb.h>

struct hostent *gethostent()

struct hostent *gethostbyname(name) char *name;

struct hostent *gethostbyaddr(addr,len,type) char *addr; int len,type;

sethostent(stayopen) int stayopen

endhostent()

ОПИСАНИЕ

Функции gethostent, gethostbyname и gethostbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в главной сетевой БД /etc/hosts:

struct hostent { char *h_name; /* официальное host-имя */ char **h_aliases; /* список псевдонимов */ int h_addrtype; /* тип адреса */ int h_length; /* длина адреса */ char *h_addr; /* адрес */ };

ЭЛЕМЕНТЫ СТРУКТУРЫ

h_name Официальное имя главной машины. h_aliases Массив альтернативных имен главной машины, оканчивающийся нулем. h_addrtype Тип возвращаемого адреса; в настоящее время всегда AF_INET. h_length Длина адреса в байтах. h_addr Указатель на сетевой адрес для главной машины.

Функция gethostent считывает следующую строку файла, в случае необходимости открывая этот файл.

Функция sethostent открывает и переходит к началу файла. Если флаг stayopen имеет ненулевое значение, главная БД не будет закрываться после каждого вызова функции gethostent.

Функция endhostent закрывает файл.

Функции gethostbyname и gethostbyaddr последовательно просматривают файл с самого начала в поисках имени или адреса главной машины.

ФАЙЛЫ

/etc/hosts

ДИАГНОСТИКА

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

ЗАМЕЧАНИЯ

Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать. Адрес может иметь только формат Internet.





H2PH(1)


ИМЯ

h2ph - конвертер файлов заголовков C .h в файлы заголовков Perl .ph

СИНТАКСИС

h2ph [headerfiles]

ОПИСАНИЕ

h2ph переводит указанный файл заголовков C в файл заголовков формата Perl.

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

ФАЙЛЫ

/usr/include/*.h /usr/include/sys/*.h etc.

АВТОР

Larry Wall

СМ. ТАКЖЕ

perl(1)



HALTSYS(ADM)


НАЗВАНИЕ

haltsys, reboot - закрывают файловые системы и разгружают операционную систему.

СИНТАКСИС

/etc/haltsys /etc/reboot

ОПИСАНИЕ

Утилита haltsys выполняет системный вызов uadmin() (см. ) для прекращения дискового ввода/вывода, очистки файловых систем и остановки процессора. haltsys вступает в действие сразу же, поэтому пользовательские процессы должны быть прерваны заранее. Для нормальной разгрузки системы рекомендуется программа shutdown(ADM), так как она предупреждает пользователей, прерывает процессы и затем вызывает haltsys. Если вы не можете запустить shutdown, например, из-за какой-либо системной проблемы, используйте haltsys непосредственно.

Команда reboot выполняет ту же функцию, что и haltsys, за исключением того, что после всего система автоматически перезагружается.

Только привилегированный пользователь может выполнять haltsys или reboot.

ПРИМЕЧАНИЯ

haltsys паркует головки жесткого диска.

СМ. ТАКЖЕ

shutdn(2), ,



HASHCHECK(1)


НАЗВАНИЕ

hashcheck - вспомогательная программа для поддержки spell - средства проверки орфографии в текстах. Читает сжатый эталонный список и повторно создает 9-цифровые хэш-коды для всех слов списка.

СИНТАКСИС

/usr/lib/spell/hashcheck

ОПИСАНИЕ

Команда spell собирает слова из файлов, перечисленных в списке файлы, и ищет их в эталонном списке. Hashcheck, вместе с программами spellin и hashmake, обеспечивает построение отсортированного эталонного списка. Hashcheck читает сжатый эталонный список и вновь создает 9-цифровые хэш-коды для всех слов списка; пишет эти коды на стандартный вывод.

ФАЙЛЫ

D_SPELL=/usr/lib/spell/hlist[ab] хэшированные эталонные списки, американские и британские

СМ. ТАКЖЕ

spell (1).



HASHMAKE(1)


НАЗВАНИЕ

hashmake - вспомогательная программа для поддержки spell - средства проверки орфографии в текстах. Читает список слов со стандартного ввода и пишет соответствующий 9-цифровый хэшкод на стандартный вывод.

СИНТАКСИС

/usr/lib/spell/hashmake

ОПИСАНИЕ

Команда spell выбирает слова из файлов, перечисленных в списке файлы, и ищет их в эталонном списке. Hashmake, вместе с программами spellin и hashckeck, обеспечивает построение отсортированного эталонного списка. Hashmake читает список слов со стандартного ввода и пишет соответствующий 9-цифровый хэш-код на стандартный вывод.

ФАЙЛЫ

D_SPELL=/usr/lib/spell/hlist[ab] хэшированные эталонные списки, американские и британские

СМ. ТАКЖЕ

spell (1).



HD(1)


НАЗВАНИЕ

hd - шестнадцатеричный дамп

СИНТАКСИС

hd файл [позиция длина] ...

ОПИСАНИЕ

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

Шестнадцатеричный адрес. Данные в шестнадцатеричном виде, сгруппированные в 32-разрядные слова. Данные в коде ASCII.

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

Позиция и длина являются шестнадцатеричными целыми числами. Если за числом стоит символ k или x, то значение умножается на 1024 или 512 соответственно. Если стоит символ i, то значение умножается на 64 и к результату прибавляется 2k-64.

ПРИМЕРЫ

Вывести дамп текущего каталога:

hd .

Вывести дамп физической памяти с адреса 0 выдать 200 байт, а с адреса 4C0 - 20 байт:

hd /dev/mem 0 200 4C0 20

Вывести дамп суперблока файловой системы:

hd /dev/dsk/hd0s0 1x 1x

Вывести дамп описателя корневого каталога:

hd /dev/dsk/hd0s0 2i 40

СМ. ТАКЖЕ

hpt(1), .



HD(HW)


НАЗВАНИЕ

hd - встроенный дисковод жесткого диска

ОПИСАНИЕ

Блочно-буферизованный доступ к первичному жесткому диску обеспечивается с помощью следующих специальных файлов блочного типа: hd00, hd01 ... hd04, hd0a и hd0d, root и swap. Блочно-буферизованный доступ к первичному жесткому диску обеспечивается с помощью следующих специальных файлов: hd10, hd11 ... hd14, hd1a,

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

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

Далее приведены имена разделов жесткого диска. Доступ к любому разделу осуществляется посредством соответствующего блочного интерфейса, например, /dev/hd01, и посредством символьного интерфейса (без обработки данных), например, /dev/rhd01.

Имена файлов устройств для жесткого диска Диск 1Диск 2Раздел /dev/hd00
/dev/rhd00/dev/hd10
/dev/rhd10весь диск /dev/hd01
/dev/rhd01/dev/hd11
/dev/rhd11первый раздел /dev/hd02
/dev/rhd02/dev/hd12
/dev/rhd12второй раздел /dev/hd03
/dev/rhd03/dev/hd13
/dev/rhd13третий раздел /dev/hd04
/dev/rhd04/dev/hd14
/dev/rhd14четвертый раздел /dev/hd0a
/dev/rhd0a/dev/hd1a
/dev/rhd1aактивный раздел /dev/hd0d
/dev/rhd0d/dev/hd1d
/dev/rhd1dраздел DOS /dev/root
/dev/rroot корневая файловая система /dev/swap
/dev/rswap область свопинга

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

Для осуществления доступа к разделам DOS задавайте буквы, наподобие "C:" или "D:", которые указывают на первый или второй разделы диска. В файле /etc/default/msdos содержатся строки, которые назаначают буквенные аббревиатуры для имен устройств DOS. Смотрите dos(C).


В следующей таблице перечисляются определения малых чисел устройств для специальных файлов жестких дисков вместе с примерами. Обратите внимание, что специальные устройства блочного и символьного типа имеют одинаковые определения малых чисел устройств. Определение малого числа устройства интерпретируется так: биты 7 и 6 обозначают физический дисковод, биты 5 - 3 обозначают виртуальные разделы диска (созданные с помощью fdisk), а биты 2 - 0 обозначают разделы, созданные с помощью divvy.
Биты малого числа устройства Физ.
7 6Вирт.
5 4 3divvy
2 1 0Имя спец. файлаОписание устройства 0 00 0 00 0 0/dev/hd00весь PD 0 0 10 0 00 0 0/dev/hd10весь PD 1 1 00 0 00 0 0/dev/hd20весь PD 2 1 10 0 00 0 0/dev/hd30весь PD 3 0 00 0 11 1 1/dev/hd01PD 0, весь VD 1 0 00 1 01 1 1/dev/hd02PD 0, весь VD 2 0 00 1 11 1 1/dev/hd03PD 0, весь VD 3 0 01 0 01 1 1/dev/hd04PD 0, весь VD 4 0 01 0 11 1 1/dev/hd0aPD 0, весь активный VD 0 01 1 01 1 1/dev/hd0dPD 0, весь VD DOS 0 01 0 10 0 0/dev/rootPD 0, акт.вирт., DP 0 0 01 0 10 0 1/dev/swapPD 0, акт.вирт., DP 1 0 01 0 10 1 0/dev/usrPD 0, акт.вирт., DP 2 0 01 0 11 1 0/dev/recoverPD 0, акт.вирт., DP 6 0 10 0 11 1 1/dev/hd11PD 1, весь VD 1 0 10 1 01 1 1/dev/hd12PD 1, весь VD 2 0 10 1 11 1 1/dev/hd13PD 1, весь VD 3 0 11 0 01 1 1/dev/hd14PD 1, весь VD 4 0 11 0 11 1 1/dev/hd1aPD 1, весь активный VD 0 11 1 01 1 1/dev/hd1dPD 1, весь VD DOS 0 11 0 10 0 0/dev/u0PD 0, акт.вирт., DP 0 + 0 11 0 10 0 1/dev/u1PD 0, акт.вирт., DP 0 + 0 11 0 10 1 0/dev/u2PD 0, акт.вирт., DP 0 + Ключ

VD = виртуальный диск PD = физический дисковод DP = раздел divvy + = имя, определенное пользователем

Файлы устройств usr и u[0-2] являются необязательными именами файловых систем; эти дескрипторы отсутствуют, если их не создаст администратор системы.

ФАЙЛЫ

/dev/hd0a /dev/hd1a /dev/usr /dev/rhd0a /dev/rhd1a /dev/rusr /dev/hd0[0-4] /dev/hd1[0-4] /dev/root /dev/rhd0[0-4] /dev/rhd1[0-4] /dev/rroot /dev/hd0d /dev/hd1d /dev/swap /dev/rhd0d /dev/rhd1d /dev/rswap



СМ. ТАКЖЕ

fdisk(5), badtrk(8), divvy(8), dos(8), mkdev(8)

ДИАГНОСТИКА

Следующие сообщения могут быть выведены на консоль:

invalid fixed disk parameter table

и

error on fixed disk (minor n), block = nnnnn, cmd=nnnnn, status=nnnn, Sector = nnnnn, Cylinder/head = nnnnn

Среди возможных причин первой ошибки:

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

Вторая ошибка выдает следующую инфоормацию:

block: Номер блока устройства. cmd: Последняя команда, посланная контроллеру. status: Статус ошибки контроллера диска. Sector и Cylinder/head задает местоположение возможного дефекта. Эта информация используется вместе с badtrk(8).

ПРИМЕЧАНИЯ

Для первого диска hd00 обозначает весь диск и используется для доступа к блоку главного загрузчика, который включает таблицу разделов, созданную с помощью fdisk. Для второго диска hd10 обозначает весь диск и используется для доступа к его таблице разделов, созданной с помощью fdisk. Не записываете ничего на место hd10 и hd00.









HDINSTALL(8)


НАЗВАНИЕ

hdinstall - размещает только что созданное ядро в месте, установленном по умолчанию.

СИНТАКСИС

hdinstall

ОПИСАНИЕ

Когда с помощью линк-комплекта создается новое ядро, то для записи нового ядра в /kernel следует вызвать hdinstall. hdinstall переписывает "старый" файл /kernel в новый файл с именем /kernel.old и копирует /usr/sys/conf/kernel в /kernel, местоположение ядра, устанавливаемое по умолчанию.

ФАЙЛЫ

/usr/sys/conf/kernel /kernel /kernel.old

СМ. ТАКЖЕ

,



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


ИМЯ

hdr - вывoд фpaгмeнтoв выпoлняeмoгo фaйлa

СИНТАКСИС

hdr [ -dhprsSt ] file ...

ОПИСАНИЕ

Hdr вывoдит в фopмaтe, пpигoднoм для чтeния, paзличныe фpaгмeнты выпoлняeмoгo двoичнoгo фaйлa: зaгoлoвoк, тaблицy имeн, инфopмaцию o пepeмeщeнии. Taкжe вывoдятcя aдpeca ceгмeнтoв в выпoлняeмoм фaйлe.

Пpoгpaммa мoжeт aнaлизиpoвaть фaйлы и библиoтeки в фopмaтax a.out, x.out и x.out (ceгмeнтиpoвaнный).

Фopмaт тaблицы имeн coдepжит шecть пoлeй. Для фaйлa a.out тpeтьe пoлe oпyщeнo. Пepвoe пoлe (пoзиция в тaблицe или индeкc имeни) вывoдитcя в дecятичнoм видe. Индex пepвoй cтpoки paвeн 0. Bтopoe пoлe, тип, вывoдитcя в шecтнaдцaтepичнoм видe. Tpeтьe пoлe, s_seg, вывoдитcя в шecтнaдцaтepичнoм видe, кaк и чeтвepтoe пoлe, знaчeниe имeни. B пятoм пoлe зaпиcывaeтcя oдин cимвoл, oтpaжaющий тип имeни, в видe, cooтвeтcтвyющeм выдaчe пpoгpaммы , зa иcключeниeм типa C кaк cпeциaльнoгo cлyчaя нeoпpeдeлeннoгo имeни. B пocлeднeм пoлe зaпиcывaeтcя coбcтвeннo имя.

Ecли инфopмaция o пepeмeщeнии нaxoдитcя в длиннoм фopмaтe, фopмaт вывoдa cocтoит из шecти пoлeй. Пepвoe пoлe - дecкpиптop в шecтнaдцaтepичнoм видe. Bтopoe пoлe - индeкc в дecятичнoм видe. Этo пoлe иcпoльзyeтcя пpи внeшниx пepeмeщeнияx кaк индeкc в тaблицe имeн. Tpeтьe пoлe - cмeщeниe внyтpи тeкyщeгo ceгмeнтa, для кoтopoгo выпoлняeтcя пepeмeщeниe; вывoдитcя в шecтнaдцaтepичнoм видe. B чeтвepтoм пoлe зaпиcывaeтcя имя пepeмeщaeмoгo ceгмeнтa: ceгмeнт инcтpyкций, дaнныx или EXT для внeшнeгo. Пятoe пoлe - paзмep пepeмeщeния: бaйт, cлoвo (2 бaйтa) или длиннoe cлoвo. B пocлeднeм пoлe, ecли oнo пpиcyтcтвyeт, yкaзывaeтcя, являeтcя ли пepeмeщeниe oтнocитeльным.

Для кopткoй фopмв пepeмeщeния фopмaт cocтoит из тpex пoлeй. Пepвoe пoлe - кoмaндa пepeмeщeния в шecтнaдцaтepичнoм видe, втopoe пoлe coдepжит имя ceгмeнтa. Пocлeднee пoлe yкaзывaeт paзмep пepeмeщeния: cлoвo или длиннoe cлoвo.

Дoпycтимы cлeдyющиe флaги:

-h Bывoдятcя зaгoлoвoк и pacшиpeнный зaгoлoвoк двoичнoгo выпoлняeмoгo фaйлa. Kaждoe пoлe зaгoлoвкa имeнyeтcя. Этoт флaг пoдpaзyмeвaeтcя пo yмoлчaнию. -d Bывoдитcя инфopмaция o пepeмeщeнии дaнныx. -t Bывoдитcя инфopмaция o пepeмeщeнии инcтpyкций. -r Bывoдитcя инфopмaция o пepeмeщeнии инcтpyкций и дaнныx. -p Инфopмaция o пoзициoниpoвaнии вывoдитcя в cooтвeтcтвии c мaкpocaми фaйлa a.out. -s Bывoд тaблицы имeн. -S Bывoд тaблицы ceгмeнтoв c зaгoлoвкoм. (Дoпycтимo тoлькo для ceгмeнтиpoвaнныx фaйлoв x.out.)

СМ. ТАКЖЕ

a.out(3),



HEAD(1)


ИМЯ

head - показывает первые строки файла

СИНТАКСИС

head [-n count] [file ...]

ОПИСАНИЕ

Выводит на экран первые строки указанного файла. По умолчанию число строк равно 10. Число выводимых строк можно указать после опции -n.

If more than a single file is specified, each file is preceded by a header consisting of the string ``==> XXX

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

СМ. ТАКЖЕ

ИСТОРИЯ

Команда head появилась в 3.0BSD.



HELP(1)


НАЗВАНИЕ

help - справочная служба системы UNIX

СИНТАКСИС

help [help] starter [help] usage [-d] [-e] [-o] [имя_команды] [help] locate [ключевое_слово ...] [help] glossary [термин] help аргумент ...

ОПИСАНИЕ

Справочная служба позволяет получить оперативную консультацию как по системе UNIX в целом, так и отдельно по системе управления исходными текстами (SCCS).

Команда help без аргументов выводит меню справочных команд вместе с их кратким описанием. Перечень справочных команд:

starter Информация о системе UNIX для начинающих.

locate Поиск команд по функционально связанным с ними ключевым словам.

usage Сведения об использовании команд.

glossary Толковый словарь терминов системы UNIX.

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

При наличии аргументов соответствующая справочная команда вызывается сразу, минуя начальное меню. Команды starter, locate, usage и glossary, быть может с предшествующим словом help, можно вызвать и из операционной системы. При таком вызове команды glossary некоторые символы нуждаются в экранировании [подробнее см. glossary(1)].

В любой момент диалога со справочной службой пользователь может выполнить команду shell'а [см. ], введя ! и собственно команду. После ее выполнения экран перерисовывается, если команда была введена в ответ на приглашение первого уровня; в противном случае перерисовывается только приглашение.

По умолчанию справочная служба роллирует изображение. Если Вы предпочитаете, чтобы экран очищался перед выводом данных (без роллинга), переменной shell'а SCROLL нужно присвоить значение no и экспортировать ее, чтобы сделать частью окружения. Для этого в пользовательский профайл .profile [см. ] достаточно вставить строку

SCROLL=no; export SCROLL

Чтобы вернуть роллинг, переменной SCROLL нужно присвоить значение yes.

Каждой из команд справочной службы (starter, locate, usage, glossary и help) посвящена отдельная статья настоящего Справочника.

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

Если первый аргумент команды help отличен от starter, locate, usage или glossary, предполагается, что затребована информация по системе управления исходными текстами (SCCS). При этом аргументы могут быть как номерами сообщений (которые обычно идут в скобках вслед за сообщением), так и именами команд следующих типов:


Начинается не с цифры, кончается цифрой. Нецифровой префикс обычно означает сокращение имени команды или набора программ, выдавших сообщение [например, ge5 для сообщения 5 от команды ]. Не содержит цифр (например, имя команды get). Целиком цифровой (например, 26).

СМ. ТАКЖЕ

glossary(1), , , , .

admin(1), , , , , , prs(1), , , , , val(1), , .

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

helpadm(1M) в Справочнике администратора.

СЮРПРИЗЫ

Если переменная окружения TERM не установлена, то по умолчанию считается, что работа идет с терминалом типа 450. Список допустимых типов терминалов содержится в файле .

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









HELPADM(1M)


НАЗВАНИЕ

helpadm - внесение изменений в базу данных справочной службы

СИНТАКСИС

/etc/helpadm

ОПИСАНИЕ

Команда управления справочной службой helpadm позволяет администраторам и разработчикам команд системы UNIX определить содержимое базы данных справочной службы для отдельных команд и управлять учетом использования справочной службы. Команду helpadm могут выполнять только пользователи root, bin, и члены группы bin.

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

Модифицировать информацию для начинающих [см. ]. Добавить, изменить или удалить словарный термин [см. ]. Добавить, изменить или удалить сведения о команде [описание, опции, примеры и ключевые слова, см. и ]. Прекратить учет использования справочной службы (это могут сделать только пользователи root и bin). Возобновить учет использования справочной службы (это могут сделать только пользователи root и bin).

Пользователь может выбрать любой из этих вариантов, введя соответствующую букву (приведенную в меню) или вернуться в систему, введя q (quit - выйти).

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

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

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

СМ. ТАКЖЕ

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

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

Из стандартного варианта файла /etc/profile экспортируется переменная окружения LOGNAME. Если после изменений эта переменная перестает экспортироваться, то средства учета использования справочной службы могут работать неправильно.

ФАЙЛЫ

/usr/lib/help/HELPLOG Информация об использовании справочной службы.

/usr/lib/help/helpclean Программа сброса информации об использовании справочной службы.



HEX(1)


НАЗВАНИЕ

hex - преобразование выполняемого файла к формату мс_записей

СИНТАКСИС

hex [-t значение] [-d значение] [-b значение] файл ...

ОПИСАНИЕ

Команда hex служит для того, чтобы преобразовать выполняемые файлы [см. a.out(4)] (удалив информацию о настройке ссылок) к формату мс_записей (MOTOROLA-S-RECORDS) и поместить их на стандартный вывод.

ОПЦИИ

-d значение Добавить шестнадцатеричное значение ко всем адресам секции данных (.data). -t значение Добавить шестнадцатеричное значение ко всем адресам секции команд (.text). -b значение Добавить шестнадцатеричное значение ко всем адресам секции неинициализированных данных (.bss).

Шестнадцатеричные значения указываются без префикса 0x. Файлы должны иметь тип a.out.

Используются следующие типы мс_записей:

0 заголовок 2 данные 5 счетчик записей (пока не реализован) 8 конец записи A имя (только опция -s)

СЮРПРИЗЫ

Опция -s не описана.



HOSTNAME(1)FreeBSD Reference Manual


ИМЯ

hostname - устанавливает или печатает имя сервера системы.

СИНТАКСИС

hostname [-s] [nameofhost]

ОПИСАНИЕ

Hostname печатает имя сервера. Суперпользователь может установить имя сервера указав его в качестве аргумента.

-s Обрезает все домены в выдаваемом имени.

СМ. ТАКЖЕ

gethostname(3)

ИСТОРИЯ

Команда hostname появилась в 4.2BSD.



HP(1)


НАЗВАНИЕ

hp - отработка специальных функций терминалов серии HP 2640 и 2641

СИНТАКСИС

hp [-e] [-m]

ОПИСАНИЕ

Команда hp поддерживает выполнение специальных функций терминалов серий 2640 и 2641 фирмы Хьюлетт-Паккард; цель введения этой команды - правильно изображать файлы, полученные в результате применения команды nroff. Типичный пример использования команды:

nroff -h files ... | hp

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

ОПЦИИ

-e Предполагается, что терминал обладает "расширенными видеовозможностями", так что максимально используются дополнительные режимы отображения. Наложенные символы изображаются в режиме подчеркивания. Верхние индексы изображаются в режиме пониженной яркости, нижние - в режиме пониженной яркости и подчеркивания. Если эта опция не задана, то считается, что терминал не обладает "расширенными видеовозможностями". В этом случае все наложенные символы, верхние и нижние индексы отображаются в негативе, т.е. темными на светлом фоне, а не светлыми на темном, как обычно. -m Сокращение обема вывода за счет удаления пустых строк. Любая последовательность из трех и более пустых строк преобразуется в последовательность из двух строк; т.е. любое количество избыточных строк преобразуется в одну. Это позволяет сосредоточить на экране больший обем текста.

Греческие буквы и другие специальные символы команда hp изображает так же, как и команда 300, за исключением того, что значок "НЕ" изображается правой стрелкой, а значок интеграла - его верхней половиной.

ДИАГНОСТИКА

Код завершения 0 при нормальном исходе и 2 - при любой ошибке.

line too long строка содержит более 1024 символов.


СМ. ТАКЖЕ

, greek(1).

СЮРПРИЗЫ

Последовательность с наложением - это последовательность, в которой между двумя печатными символами встречаются символы возврата на шаг назад. Если один из таких символов - подчеркивание, то другой изображается с подчеркиванием или в негативе; если же ни один из символов не является подчеркиванием, то изображается только первый из них (также с подчеркиванием или в негативе). Никаких специальных действий не предпринимается, если символ возврата на шаг назад расположен рядом с управляющим символом ASCII. Последовательности управляющих символов (например, перемещение вверх, шаг назад по строке) могут привести к "исчезновению" текста; в частности, в таблицах, созданных командой tbl и содержащих вертикальные линии, часто пропадают строки текста с "основанием" вертикальной линии, пока файл не будет предварительно обработан командой .

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









HPT(1)


НАЗВАНИЕ

hpt - шестнадцатеричные заплаты

СИНТАКСИС

hpt файл

ОПИСАНИЕ

Утилита hpt читает команды со стандартного ввода и ставит заплаты на файл. Она распознает 3 различных типа команд:

смещение :

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

данные

Команда записи данных в файл. Данные задаются как последовательность четного числа шестнадцатеричных цифр. В остальном длина последовательности произвольна.

/ комментарий перевод_строки

Комментарий начинается символом / и продолжается до конца строки.

Все величины интерпретируются как шестнадцатеричные.

ПРИМЕР

Выполнение конвейера

hd f1 | hpt f1

не изменит файл f1.

СМ. ТАКЖЕ

.



HSEARCH(3C)


НАЗВАНИЕ

hsearch, hcreate, hdestroy - управление хеш-таблицами поиска

СИНТАКСИС

#include <search.h>

ENTRY *hsearch (item, action) ENTRY item; ACTION action;

int hcreate (nel) unsigned nel;

void hdestroy ( )

ОПИСАНИЕ

Функция hsearch предназначена для выполнения поиска в хеш-таблице в соответствии с алгоритмом, описанным в книге Д. Кнута: Искусство программирования для ЭВМ. Т. 3. Сортировка, поиск. - М.: Мир, 1978. Раздел 6.4, алгоритм D.

Функция hsearch возвращает указатель внутрь таблицы на искомые данные. Аргумент item - это структура типа ENTRY (определенная во включаемом файле <search.h>), содержащая два указателя: item.key указывает на сравниваемый ключ, а item.data указывает на любые дополнительные данные, ассоциированные с этим ключом. Указатели на переменные типов, отличных от символьного, следует преобразовывать к типу "указатель на символ". Аргумент action имеет тип ACTION и задает способ действий в случае неудачного поиска: значение ENTER означает, что искомый элемент следует поместить в таблицу; значение FIND означает, что в случае неудачи нужно вернуть пустой указатель NULL.

Функция hcreate выделяет достаточное количество пространства для таблицы и должна вызываться перед использованием функции hsearch. Значением переменной nel является ожидаемое максимальное количество элементов таблицы. Это число можно взять с запасом, чтобы уменьшить среднее время поиска.

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

ПРИМЕЧАНИЯ

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

DIV Вместо мультипликативной хеш-функции использовать остаток от деления на размер хеш-таблицы. USCR При поиске вызывать функцию сравнения, предоставляемую пользователем. Функция должна называться hcompar и вести себя подобно функции strcmp [см. ]. CHAINED

Для разрешения коллизий использовать списки синонимов. Если выбирается эта опция, то становятся доступными также следующие опции: START Помещать новые элементы в начало списка синонимов (по умолчанию - в конец). SORTUP Поддерживать списки синонимов отсортированными по ключу в порядке возрастания. SORTDOWN Поддерживать списки синонимов отсортированными по ключу в порядке убывания. <



HWCONFIG(1)


ИМЯ

hwconfig - Читать информацию о конфигурации.

СИНТАКСИС

hwconfig[-ffilename][param][param=val]...

ОПИСАНИЕ

Команда hwconfig возвращает информацию о конфигурации, содержащуюся в файле /usi/adm/hwconfig или в файле, определенном по командной строке с опцией -f filename. Используя комбинации оставшихся опций пользователь может из файла конфигурации просмотреть столько информации, сколько ему необходимо. Команда hwconfig показывает все значения аргумента param всего файла конфигурации. Аргумент param может быть допустимым системным параметром. Команда hwconfig показывает только информацию из строки, где аргумент param равен значению val.

ПРИМЕРЫ

Когда Вы вводите:

hwconfig<RETURN>

Производится печать содержимого всего файла /usi/adm/hwconfig.

hwconfig base<RETURN>

Происходит распечатывание всех значений параметра base, найденные в файле /usi/adm/hwconfig.

hwconfig-f conf.base=300 vec=19 <RETURN>

Производится печать всех записей в conf, которые соответсвуют заданным значениям base и vec.

hwconfig name=floppy base<RETURN>

Производится печать для всех записей имени и значение base в файле /usi/adm/hwconfig для драйверов с именем floppy.

ФАЙЛЫ

/usi/adm/hwconfig



HYPOT(3M)


НАЗВАНИЕ

hypot, hypotf, cabs, cabsf - функция, вычисляющая эвклидово расстояние

СИНТАКСИС

#include <math.h>

double hypot (x, y) double x, y;

float hypotf(float x, float y)

struct {double x, y;} z;

double cabs(z)

struct {float x, y;} z;

float cabsf(z)

ОПИСАНИЕ

Функция hypot возвращает значение

sqrt (x*x + y*y)

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

СМ. ТАКЖЕ

.

ДИАГНОСТИКА

Если к переполнению приводит попытка представления корректного результирующего значения, то функция hypot возвращает значение HUGE [см. ], а внешней переменной errno присваивается значение ERANGE.

Изложенная процедура обработки ошибок может быть изменена посредством функции



QSORT(3C)


НАЗВАНИЕ

qsort - быстрая сортировка

СИНТАКСИС

void qsort ((char *) base, nel, sizeof (*base), compar) unsigned int nel; int (*compar) ( );

ОПИСАНИЕ

Процедура qsort реализует алгоритм быстрой сортировки таблицы данных на своем месте.

Аргумент base является указателем на начало таблицы. Nel - число элементов в таблице. Compar - функция сравнения, аргументами которой при вызове служат два указателя на сравниваемые элементы. В соответствии с тем, какое целое число она возвращает: меньшее нуля, равное нулю или большее нуля, первый аргумент считается меньшим, равным или большим по отношению ко второму.

ПРИМЕЧАНИЯ

Указатель на начало таблицы должен иметь тип "указатель на элемент" и преобразовываться к типу "указатель на символ".

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

Порядок, в каком окажутся после сортировки два элемента, считающиеся равными при сравнении, непредсказуем.

СМ. ТАКЖЕ

, , .

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



CTYPE(3C)


НАЗВАНИЕ

ctype: isalpha, isupper, islower, isdigit, isxdigit, isalnum, isspace, ispunct, isprint, isgraph, iscntrl, isascii - классификация символов

СИНТАКСИС

#include <ctype.h>

int isalpha (c) int c;

...

ОПИСАНИЕ

Перечисленные выше макросы классифицируют целые значения, являющиеся кодами символов, путем просмотра таблицы. Каждый из макросов является предикатом, возвращающим ненулевое значение как истину, и 0 - как ложь. Макрос isascii определен для любого целого значения. Остальные определены, только если условие isascii истинно, а также для единственного значения, не являющегося кодом ASCII, а именно EOF [-1; см. ].

Ниже перечислены условия, проверяемые каждым из макросов:

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

СМ. ТАКЖЕ

, .

ДИАГНОСТИКА

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



ID(1)


НАЗВАНИЕ

id - выдача идентификаторов и имен пользователя и группы

СИНТАКСИС

id

ОПИСАНИЕ

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

СМ. ТАКЖЕ

.

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



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


НАЗВАНИЕ

ident - идентификация файла по ключевым символам в системе отслеживания версий RCS

СИНТАКСИС

ident [ -q ] [ -V ] [ имя-файла ... ]

ОПИСАНИЕ

Команда ident ищет подстроки вида $ключевой-символ: текст$ в заданных файлах, а если они не указаны, то в стандартном вводе.

Строки такого вида вставляются в файл автоматически командой . Флаг -q подавляет сообщение об отсутствии искомых подстрок. Флаг -V сообщает номер версии.

Программа ident работает как с текстовыми файлами, так и с двоичными. Например, если программа на C в файле f.c содержит

#include

static char const rcsid[] = "$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $"; int main() { return printf("%s\n", rcsid) == EOF; }

и f.c откомпилирован в файл f.o, тогда команда

ident f.c f.o

сообщит:

f.c: $Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $ f.o: $Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $

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

Команда ident ищет все подстроки вида $ключевой-символ: текст$ даже если RCS не поддерживает такого ключевого символа, что удобно, если вы ищете выражения типа $XConsortium$.

КЛЮЧЕВЫЕ СЛОВА И ИХ ЗНАЧЕНИЯ:

Ниже приведен список ключевых символов, поддерживаемый . По умолчанию используется Всемирное Время, (UTC, иногда называемое Гринвичским GMT) но флаг -zzone может это изменить.

$Author$ Имя (login name) пользователя зарегистрировавшего данную версию.

$Date$ Дата и время регистрации версии. Флаг -zzone добавит числовое значение часового пояса, по умолчанию используется Всемирное Время.

$Header$ Стандартный заголовок. Содержит полное имя файла с абсолютной формой указания пути, номер версии, дату и время регистрации, автора, статус и имя пользователя, забронировавшего версию для внесения изменений (если это так). Флаг -zzone добавит числовое значение часового пояса, по умолчанию используется Всемирное Время.

$Id$ То же, что и $Header$, но имя файла не содержит путь.

$Locker$ Имя пользователя, забронировавшего версию для внесения изменений. Пустая строка, если файл не забронирован.

$Log$ Регистрационная запись, внесенная при регистрации со стандартным заголовком впереди. С точки зрения команды ident ничем не отличается от такого символа, как, скажем, $RCSfile$

$Name$ Символическое имя, использованное при извлечении файла из архива. Например, co -rJoe породит $Name: Joe $ . Просто co породит просто $Name: $.

$RCSfile$ Имя файла, без пути.

$Revision$ Номер версии.

$Source$ Полное имя файла с абсолютным заданием пути.

$State$ Статус заданный флагом -s команд или .

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

символ представление tab \t newline \n space \040 $ \044 \ \\

СМ. ТАКЖЕ

, , , , , , , rcsfile(5)

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.



IDLEOUT(8)


НАЗВАНИЕ

idleout - отключает неработающих пользователей.

СИНТАКСИС

idleout [minutes | hours:minutes]

ОПИСАНИЕ

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

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

IDLETIME=time

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

ФАЙЛЫ

/etc/default/idleout /etc/utmp /etc/wtmp

СМ. ТАКЖЕ

, getut(2),

ПРИМЕЧАНИЯ

Только привилегированный пользователь может запускать эту программу.



IMACCT(1)


ИМЯ

imacct - Формирует отчет об учетной информации IMAGEN.

СИНТАКСИС

imacct acctfile

ОПИСАНИЕ

Команда imacct считывает файл учетной информации IMAGEN - acctfile и формирует отчет по числу печатаемых страниц и файлов. Она подсчитывает эту информацию по каждому пользователю, по каждой главной вычислительной машине и обеспечивает итоги и процентные соотношения.

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

ФАЙЛЫ

/usr/adm/imagen По умолчанию acctfile записан imagen.spp.

СМ. ТАКЖЕ

imagen(5),

ЗАМЕЧАНИЯ

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

АВТОР

Корпорация IMAGEN.



IMAGEN(7)


НАЗВАНИЕ

imagen.sbs, imagen.pbs, imagen.spp, imagen.remote - Интерфейсные шрифты принтера IMAGEN.

СИНТАКСИС

imagen.sbs требует копии заголовков файлов режима пользователя imagen.pbs требует копии заголовков файлов режима пользователя imagen.spp требует копии заголовков файлов режима пользователя imagen.remote требует копии заголовков файлов режима пользователя

ОПИСАНИЕ

Шрифты imagen представляют собой интерфейсные программы для спулера XENIX System V для принтеров IMAGEN. Для печати они выбирают следующие виды файлов для печати: вход troff(1), troff выход (С/А/Т формат), формат imPRESS, DVI формат (производимый в общем случае) и прямой текст. Правильный интерфейсный шрифт imagen обычно вводится с помощью программы .

imagen.sbs использует "последовательный протокол байтового потока", обеспечиваемый isbs.

imagen.pbs использует "параллельный протокол байтового потока", обеспечиваемый ipbs.

imagen.spp использует последовательный "протокол чередующегося пакета", обеспечиваемый .

imagen.remote посылает задание печати на дистанционный компьютер с помощью или . Команда, которую надо использовать, определяется в файле /usp/spool/lp/remote, и устройство "принтер", определяемое lpadmin (с использованием флага -v), должно быть /dev/null.

Распознаваемые параметры :

-oli Входные файлы в формате imPRESS, но без заголовка. -olp Входные файлы представляют собой текст для построчной печати. -olfi Входные файлы в полном формате imРRESS с заголовком. -olt Входные файлы представляют собой ввод troff. -oldvi Входные файлы в формате DVI (вывод), их нужно отфильтровать через dviimp(1). -olc Входные файлы являются выводом troff ( в С/А/Т формате), их следует отфильтроваить через catimp(1). -otflag Передать параметр flag в troff. -ocflag Передать параметр flag в catimp. -ovflag Передать параметр flag в dviimp. -oiflag flag представляет собой управляющую установку принтера:

1Печатать одну страницу на каждом листе бумаги. 2Печатать две страницы на каждом листе бумаги. ОЗаключить страницу в рамку. rПечатать страницы наоборот (в обратном порядке). сНе объединять страницы повторных компий. RПечатать на странице (одно через каждые две строки). JЗапретить печать рабочего титульного листа. mНе печатать подробного сообщения об ошибках на титульном листе. jВключатся меры по сопротивлению замятия. По умолчанию работа по сопротивлению замятия управляется установкой JAMPROOF в файле /etc/default/imagen.

<


/p>

Не все управляющие установки имеют значение для каждого language принтера IMAGEN.

-ob Не следует выдавать никакой титульной информации о местном пользователе или о главной ЭВМ. -ohhost Компьютер, ответственный за данное задание - host. -ouuser Ответсвенный за данное задание пользователь - user. Все интерфейсные шрифты imagen считывают /etc/default/imagen, чтобы получить различные установки по умолчанию. Полученные значения и значения по умолчанию:

JAMPROOF=no

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

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

ФАЙЛЫ

/usr/bin/itroff

troff для принтера IMAGEN.
/usr/bin/catimp

Преобразует из вывода troff C/A/T в формат imPRESS.
/usr/bin/dviimp

Преобразует из DVI вывода в формат imPRESS.
/usr/lib/ips

(imagen.spp) последовательный чередующийся пакетный протокол IMAGEN.
/usr/lib/isbs

(imagen.sbs) последовательный байтовый потоковый протокол IMAGEN.
/usr/lib/ipbs

(imagen.pbs) параллельный байтовый потоковый протокол IMAGEN.
/usr/spool/lp/remote

(imagen.remote) Отображение из местного имени принтера в команды remote или uux. Каждая строка в следующем формате:

printer: command

где printer является именем "локального" принтера IMAGEN, и сommand - это вызов lp на другом устройстве в режимах remote или uux. Другое устройство должно иметь такую конфигурацию, чтобы дистанционный lp был разрешен, и локальный command должен определять параметры, которые потребуются, таким образом, чтобы к нему мог быть подключен ввод. Дополнительный флаг к lp добавляется в конец command с помощью использования imagen.remote. Типичная remote command будет иметь вид:

printer: remote - machine lp - dimagen

а типичная uux command :

printer: uux - machine!lp - dimagen

СМ. ТАКЖЕ

catimp(1), dviimp(1), , , , , itroff(1), ,

АВТОР

IMAGEN Corporation.

IMPRINT(1)


ИМЯ

imprint - Печатает текстовые файлы на печатающем устройстве IMAGEN.

СИНТАКСИС

imprint[options][file...]

ОПИСАНИЕ

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

ОПЦИИ

-Iflag Передает признак flag команде ipr.

-pflag Передает признак flag одной из команд pr или cat.

-Pprinter Печатает выводимую информацию на устройсве печати, заданном аргументом printer. По умолчанию аргумент printer определяется переменной PRINTER в файле /etc/default/imagen, который считывается командой ipr.

-cn Печатает n копий. При этом включается постраничное упорядочивание.

-hbannar Строка, указанная аргументом banner, передается обеим командам pr(-h) и ipr(-f) в качестве заголовка для этого задания.

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

-n Для печати файла использует команду cat вместо команды pr.

-wn Устанавливает ширину строки в n символов. Ширина строки более 80 символов печатается в горизонтальной ориентации (132 колонки).

-2 Печатает две логические страницы на физической странице ("2-up").

-C Подавляет постраничное упорядочение (смотрите выше -c).

-F Подавляет возврат страниц (который установлен по умолчанию).

-J Подавляет формирование страницы заголовка задания.

-L Печатает в горизонтальном режиме, по ширине 132 колонки.

-O Печатает рамки страниц.

-R Печатает линейки страниц (раз в каждые две строки).

-d Печатает некоторую информацию в целях отладки.

-on Вывод информации производится со смещением в n позиций символов относительно левого края.

-Tn Вывод информации начинается с n 1/48-ых дюйма от верхнего края каждой страницы.

СМ. ТАКЖЕ

, ,

ЗАМЕЧАНИЯ

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

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

Опция -T имеет смысл только в том случае, если языком печатающего устройства IMAGEN является "daisy". Это может быть установлено с помощью -I-Ldaisy. Если именно daisy является языком печатающего устройства, то опция -o использует элементы в 1/120 дюйма вместо ширины символа.

Старые версии команды imprint пересылают неопознанные аргументы в одну из команд pr или cat. Это в последующих версиях не поддерживается и в одной из команд pr или cat, должны быть использованы для передачи неподошедшего аргумента option, либо опция -p либо разделитель -- "end of options" ("конец перечисления опций").

АВТОР

Корпорация IMAGEN.



INFOCMP(1M)


НАЗВАНИЕ

infocmp - сравнение или печать информации о характеристиках терминалов, хранящейся в базе данных terminfo

СИНТАКСИС

infocmp [-d] [-c] [-n] [-I] [-L] [-C] [-r] [-u] [-s [d] [i] [l] [c]] [- [-w ширина] [-A каталог] [-B каталог] [терминал ...]

ОПИСАНИЕ

Утилита infocmp используется для сравнения элементов базы данных , для перезаписи элемента terminfo, определяемого по значению ключевого поля use=, а также для вывода в различных форматах скомпилированного описания характеристик терминалов [см. ]. Во всех случаях сначала печатаются булевы поля, затем числовые, а затем поля, содержащие цепочки символов.

Терминалы задаются своими именами.

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

Если опции не указаны, подразумевается опция -I. При этом, если указано несколько терминалов, подразумевается еще и опция -d.

Опции сравнения [-d] [-c] [-n]

Утилита infocmp сравнивает описание характеристик первого указанного терминала с остальными указанными терминалами. Если какая-либо из характеристик присутствует только у одного из терминалов, возвращается значение, зависящее от типа характеристики: F для булевой, -1 для числовой, NULL для характеристики, описываемой цепочкой символов.

-d Напечатать список характеристик, по которым терминалы различаются. Если есть два описания для одного и того же терминала или для похожих терминалов, утилита infocmp покажет разницу между ними. Обычно это требуется, если два человека составили описания одного и того же терминала и желательно выявить различия между описаниями. -c Напечатать список характеристик, являющихся общими для двух терминалов. Характеристики, которых нет, игнорируются. Эту опцию можно использовать для быстрой проверки того, стоит ли применять опцию -u. -n Напечатать список характеристик, отсутствующих у заданных терминалов. Если терминалы не указаны, дважды используется значение переменной окружения TERM. Опция -n позволяет быстро узнать, не осталась ли какая-нибудь характеристика за пределами рассмотрения.

Опции получения исходного листинга [-I] [-L] [-C] [-r]


Опции -I, -L, - C используются для выдачи исходного листинга характеристик каждого из указанных терминалов.
-I Использовать имена . -L Использовать длинные имена, перечисленные во включаемом файле <term.h>. -C Использовать имена termcap [см. ]. -r Преобразовывать все характеристики к виду termcap; применяется вместе с опцией -C.

Если терминалы не указаны, используется значение переменной окружения TERM.

Текст, сгенерированный по опции -C, можно без переделок использовать как элемент базы данных termcap, однако не исключена ситуация, когда некоторые параметризованные цепочки символов к формату termcap привести не удалось. Утилита infocmp пытается преобразовать всю параметризованную информацию; то, что преобразовать не удалось, особо помечается в выводе и делается комментарием. Подобные фрагменты следует редактировать вручную.

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

Все переменные termcap, которые не поддерживаются в terminfo, но могут быть вычислены по другим переменным terminfo, будут включены в число результатов. Преобразуются не все компоненты terminfo, а только те, которые присутствовали в termcap. Использование опции -r снимает это ограничение и приводит к выводу всех характеристик в виде termcap.

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

Ниже приводятся некоторые параметризованные цепочки terminfo, их эквиваленты в termcap и типы терминалов, использующих эти последовательности:
Terminfo Termcap Терминалы %p1%c %. adm %p1%d %d hp, ANSI, vt100 %p1%'x'%+%c %+x concept %i %i ANSI, vt100 %p1%?%'x'%>%t%p1%'y'%+%; %>xy concept %p2 выводится раньше %p1 %r hp <



/p>

Опция use= [-u]

-u Сгенерировать описание в формате terminfo первого из перечисленных терминалов относительно описаний остальных терминалов. Описание генерируется путем анализа различий первого терминала и других указанных терминалов и генерации описания, в котором используются поля use=. Таким образом можно включить в описание терминала фрагменты, общие для группы терминалов. Еще одно применение опции -u: если описания сходных терминалов составлялись в разное время или разными людьми, утилита infocmp покажет, что нужно сделать, чтобы получить описание одного терминала относительно другого.

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

Порядок, в котором указываются остальные имена терминалов, существен. Поскольку компилятор terminfo-описаний обрабатывает все характеристики слева направо, указание двух полей use=, которые содержат различные значения для одной и той же характеристики, приведет к различным результатам при изменении порядка элементов. Утилита infocmp отмечает все обнаруженные противоречия такого сорта.

С другой стороны, указание какой-либо характеристики после соответствующего ей поля use= приводит к тому, что это указание игнорируется. Использование утилиты infocmp для воссоздания описания может быть хорошей проверкой корректности исходного описания.

Еще одной ошибкой, вызывающей возрастание времени компиляции, является употребление избыточных полей use=. Утилита infocmp помечает такие поля.

Остальные опции [-s [d] [i] [l] [c]] [-v] [-V] [-1] [-w ширина]

-s Отсортировать поля каждого типа в соответствии с порядком, определяемым следующим аргументом:
d - оставить поля в том порядке, в каком они хранятся в базе данных terminfo;
i - отсортировать по terminfo-имени;
l - отсортировать по длинному C-имени;
c - отсортировать по termcap-имени. Из четырех перечисленных аргументов должен быть задан ровно один. Если опция -s не указана, поля каждого типа сортируются по terminfo-имени, но если указана опция -C, сортировка производится по termcap-имени, а если указана опция -L, то по длинному C-имени. -v Во время работы программы выводить в стандартный протокол трассировочную информацию. -V Вывести в стандартный протокол версию программы и завершиться. -1 Печатать поля по одному в строке. Без этой опции в строке печатается несколько полей, максимальная ширина по умолчанию - 60 символов. -w ширина
Установить ширину вывода.

Изменение базы данных [-A каталог] [-B каталог]

Место, где находится скомпилированная база данных , определяется по переменной окружения TERMINFO. Если эта переменная не определена или в указанной базе данных терминал не найден, используется системная база данных (обычно /usr/lib/terminfo). Опции -A и -B служат для изменения описанного порядка. Опция -A определяет базу данных для первого терминала, а опция -B определяет базу данных для остальных терминалов. Таким образом можно сравнивать описания терминалов с одинаковыми именами, хранящиеся в разных базах данных (например, описания одного и того же терминала, созданные разными людьми). Если опции -A и -B не заданы, сравниваемые терминалы должны иметь различные имена.

ФАЙЛЫ

/usr/lib/terminfo/?/* Скомпилированная база данных описаний терминалов.

ДИАГНОСТИКА

malloc is out of space!

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

use= order dependency found

Значение в относительном описании одного терминала не совпадает со значением в относительном описании другого терминала.

'use=терминал' did not add anything for the description

Использование относительного описания не добавляет терминалу никаких новых характеристик.

must have at least two terminal names for a comparison to be done

Опции -u, -d и -c требуют указания как минимум двух терминалов.

СМ. ТАКЖЕ

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

ПРИМЕЧАНИЯ

База данных termcap, использовавшаяся в ранних версиях ОС UNIX, в будущих версиях может не поддерживаться.









INIT(1M)


НАЗВАНИЕ

init - инициализация управления процессами

СИНТАКСИС

/etc/init [0] [1] [2] [3] [4] [5] [6] [S] [s] [Q] [q] [a] [b] [c]

ОПИСАНИЕ

Процесс init является главным диспетчером процессов. Его основная задача - создание процессов в соответствии со схемой, хранящейся в файле /etc/inittab [см. ]. Схема обычно предписывает запуск процессов getty для всех терминальных линий, посредством которых пользователи могут войти в систему. Init также контролирует работу автономных процессов, требующихся конкретной системе.

С точки зрения процесса init система в любой момент времени находится на определенном уровне выполнения. Уровень_выполнения может рассматриваться как программная конфигурация системы, причем каждая конфигурация допускает существование только определенной группы процессов. Процессы, запускаемые init'ом на каждом уровне выполнения, описаны в файле inittab. Возможны восемь уровней выполнения: от 0 до 6, S и s. Уровень выполнения изменяется при запуске init'а привилегированным пользователем. Запущенный пользователем init посылает соответствующие сигналы исходному процессу init, созданному при перезагрузке системы, сообщая, на какой уровень выполнения надо перейти.

Процесс init запускается в рамках системы UNIX в качестве последнего шага процедуры загрузки. Сначала init ищет в файле /etc/inittab строку initdefault [см. ]. Если таковая имеется, то init использует ее для определения начального значения уровня выполнения. Если такой строки нет, то init запрашивает начальное значение уровня выполнения у пользователя через виртуальную системную консоль, /dev/syscon. Если в ответ вводится буква S или s, init переходит в однопользовательский режим (SINGLE USER). Это единственный уровень выполнения, который не требует наличия заранее подготовленного файла /etc/inittab. Иными словами, если файл inittab не существует, то допускается работа только в однопользовательском режиме. При этом виртуальная консоль открывается на чтение и запись и сразу же выполняется команда /bin/su -root. Для выхода из однопользовательского режима следует использовать init, так как при завершении shell'а по концу файла init только переинициализирует однопользовательский режим.

Если во время загрузки виртуальная системная консоль (/dev/syscon) связана не с физической системной консолью, подключенной к процессору (/dev/console), то при запросе нового уровня выполнения процесс init может потерпеть неудачу.

В ответ на вопрос о новом уровне выполнения можно ввести только одну из цифр от 0 до 6 либо буквы S или s. Любой другой ответ будет отвергнут и вопрос будет задан вновь.

При вводе S или s init действует как описано выше для однопользовательского режима и, кроме того, связывает /dev/syscon с терминалом пользователя, делая его виртуальной системной консолью. На физическую консоль /dev/ console выводится сообщение о переназначении виртуальной консоли.

При первом запуске init'а и при каждом переходе из однопользовательского режима на другой уровень выполнения, init устанавливает характеристики виртуальной консоли, /dev/syscon, с помощью вызова , в соответствии с хранящимися в файле /etc/ioctl.syscon характеристиками. Этот файл записывается процессом init при переходе в однопользовательский режим.

Если в качестве ответа введена цифра от 0 до 6, то init устанавливает соответствующий уровень выполнения.

Если init впервые перешел на уровень выполнения, отличный от однопользовательского, то сначала файл inittab просматривается в поисках строк, где в качестве действия указаны boot или bootwait. Процессы, соответствующие этим строкам, запускаются перед какой-либо другой обработкой inittab при условии, что введенный уровень выполнения совпадает с указанным в строке. Таким образом, перед тем, как пользователи получат доступ к системе, могут быть произведены некоторые начальные действия, такие, например, как монтирование файловых систем. Затем в файле inittab ищутся все строки, которые должны быть обработаны на данном уровне выполнения.

Уровень выполнения 2 определяется как содержащий все процессы для терминалов и демоны, которые должны работать в многопользовательском окружении, поэтому данный режим называют многопользовательским (MULTI-USER).

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

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

Можно запустить init, указав в качестве аргумента один из псевдоуровней a, b или c. Реальный уровень выполнения при этом не изменяется, а в смысле порождения процессов псевдоуровни не отличаются от реальных. Обычно псевдоуровни используют для выполнения группы команд.

Для многопользовательского режима файл inittab подготавливается таким образом, чтобы init создавал процесс для каждого пользовательского терминала.

Каждый процесс shell, запущенный с терминала, в конце концов будет завершен либо из-за получения символа конца файла, либо из-за освобождения линии. Когда init получает сигнал, о том, что запущенный им процесс завершен, он записывает этот факт и причину завершения в файлы /etc/utmp и /etc/wtmp, если последний существует [см. ]. История процессов, запускаемых init'ом, хранится в файле /etc/wtmp.

Для запуска процессов, упомянутых в файле inittab, init читает весь файл и для каждой строки, процесс в которой требует перезапуска, порождается потомок. После запуска всех процессов, указанных в файле inittab, init ожидает, пока либо один из его потомков завершится, либо будет получен сигнал об ошибке питания, либо порожденный пользователем init предпишет изменить уровень выполнения. Когда одно из перечисленных условий становится истинным, init вновь просматривает файл inittab. Добавлять строки в файл inittab можно в любое время, однако init все равно будет ожидать одно из трех вышеуказанных событий. Чтобы заставить init немедленно обработать файл inittab, его следует разбудить командами init Q или init q.

Если init получает сигнал об ошибке питания (SIGPWR), он просматривает файл inittab в поисках строк с действиями powerfail и powerwait. Соответствующие этим строкам процессы (если позволяет уровень выполнения) будут выполнены в первую очередь. Таким образом, init может выполнять различные процедуры при завершении работы операционной системы. Заметим, что в однопользовательском режиме выполняются только строки powerfail и powerwait.

Если процессом init получен запрос на изменение уровня выполнения, он посылает сигнал-предупреждение SIGTERM всем процессам, которые не должны работать на требуемом уровне выполнения. Затем, выждав 5 секунд, init уничтожает их сигналом SIGKILL.

Для формирования подразумеваемого окружения процессов init читает файл /etc/TIMEZONE.

ФАЙЛЫ


/etc/inittab /etc/utmp /etc/wtmp /etc/TIMEZONE /dev/console /dev/syscon /etc/ioctl.syscon

СМ. ТАКЖЕ

, .

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

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

ДИАГНОСТИКА

Если init обнаружит, что действия, связанные с какой либо строкой из /etc/inittab, были выполнены более 10 раз за 2 минуты, он делает вывод, что в этой строке имеется ошибка, и выдает сообщение на системную консоль. Затем он игнорирует строку с ошибкой, пока либо не пройдет пять минут, либо не придет сигнал от запущенного пользователем init'а. Это предохраняет init от пожирания системных ресурсов, как в случае описки в файле inittab, так и в случае неосторожного удаления программы, упомянутой в /etc/inittab.









INIT(7)


НАЗВАНИЕ

init, inir - Инициализация управления процессами.

СИНТАКСИС

/etc/init /etc/inir

ОПИСАНИЕ

Программа init вызывается на последнем шаге процедуры начальной загрузки и на первом шаге включения терминалов для вводов пользователей. init является одной из трех программ (init, getty (7) и login (1)), используемых для инициализации системы с целью вычисления.

init создает процесс для каждого терминала, в который может войти пользователь. Он начинается с открытия консольного усторйства /dev/console для считывания и записи. Затем он вызывает командный процессор, требующий пароль для запуска системы в режиме обслуживания. Так как при этом считывается файл EOF, система входит в "многопользовательский режим". Если вводится корневой пароль, командный процессор стартуется и подключается к консоле. Когда этот процессор выключается, система переходит к "многопользовательскому режиму".

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

Пользователь может использовать команду boot, и файловая система может быть загрязнена. В этом случае 2inir 0 приглашает пользователя, спрашивающего, где выполнять fsck (8). (Смотри более подробно fsck (8).)

Пользователь может использовать boot, и файловая система может быть чистой. В этом случае inir считывает команды из файла /etc/rc. Это выполняется с помощью процедур "multi-user/rc" и "getty/login", описанных ниже.

"multi-user/rc" procedure: Как только файловая система становится чистой, командный процессор завершает свою работу, и init выполняет несколько шагов для того чтобы начать обычное действие. Она вызывает процессор и считывает команды в /etc/ttys файле. Этот командный файл выполняет служебные задачи, такие как удаление временных файлов, монтирование файловых систем и запуск демонов. Затем он читает /etc/ttys файл и делит на несколько частей для того, чтобы начать процесс для каждого терминального устройства в файле. Каждая строка в /etc /ttys печатает состояние строки (0 для закрытой и 1 для открытой), режим строки и последовательную строку (смотри ttys (3)). Каждый процесс открывает соответственную последовательную строку для чтения и записи, присваивая файловые дискрипторы 0 , 1 и 2 сторке и устанавливая ее как стандартные файлы ввода, вывода и ошибок. Если последовательная строка связана с модемом, процесс задерживает открытие строки до тех пор, пока кто-нибудь не вызовет ее, и в этой строке не осуществится передача.


"getty/login" procedure: Как только init открывает строку, она выполняет программу getty, передавая режим строки в качестве аргумента. Программа getty читает имя файла и вызывает для завершения входного процесса (детально смотри getty(M7)). init ждет до тех пор, пока пользователь не выйдет из системы, печатая конец файла ASCII (Ctrl-D) или зависая. В ответ он вызывает и удаляет предыдущий ввод пользователей из файла utmp, и входит в файл wtmp, который хранит информацию о вводах и выводах. Затем соответствующая строка еще раз открывается, а getty еще раз вызывается.

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

ФАЙЛЫ

/dev/tty* /etc/utmp /usr/adm/wtmp /etc/default/boot /etc/ttys /etc/rc /etc/gettydefs

СМ. ТАКЖЕ

, telenit(8), , , , , , , ttys(3), , gettydefs(3), inittab(3)

ДИАГНОСТИКА

Если в течение пяти минут или менее на одной и той же строке стартуются семь или более процессов getty, init записывает сообщение об ошибках в /dev/console и отказывается запускать другую getty на той же строке, по крайней мере, в течение 30 минут. Если требуется, init стартует немедленно снова, для работы init нужно запустить SIGINT.

ПРИМЕЧАНИЯ

init может быть вызвана только ядром как процесс 1. Не может быть вызвана из запроса командного процессора.

Для пользователей, хорошо знакомых с подходом telenit к администратору терминала, предполагается inittab. Для большей информации смотри telenit(8) и inittab(3).









INITTAB(4)


НАЗВАНИЕ

inittab - схема процесса init

ОПИСАНИЕ

Файл /etc/inittab содержит сценарий для исполнения программой роли главного диспетчера процессов. Самым заметным из диспетчеризуемых является процесс инициализации терминальных линий /etc/getty. Другие примеры - демоны и shell.

Файл inittab состоит из строк, имеющих следующий формат (важен и порядок строк):

имя:уровень_выполнения:действие:процесс

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

имя

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

Это поле определяет уровень выполнения, при котором строка будет обрабатываться. Уровень выполнения непосредственно соответствует конфигурации процессов в системе. Каждому процессу, запущенному init'ом, присваивается уровень или уровни выполнения, при которых тот может существовать. Уровни выполнения обозначаются цифрами от 0 до 6. Например, если система находится на уровне 1, то будут обработаны только строки, содержащие единицу в поле уровень_выполнения. Когда к init'у обращаются с запросом о смене уровня выполнения, всем процессам, которые не должны существовать на новом уровне, посылается предупреждающий сигнал SIGTERM и дается 20 секунд на завершение, после чего "лишние" процессы принудительно терминируются сигналом SIGKILL. Можно указать несколько допустимых уровней выполнения, если задать ряд цифр из диапазона от 0 до 6. Если уровень_выполнения вообще не указан, то считается, что процесс может выполняться на любом уровне. Существует также три дополнительных значения, a, b и c, которые могут быть указаны в данном поле, хотя они и не являются реальными уровнями выполнения. Строки с такими значениями уровня выполняются только по запросу процесса telinit [см. ] независимо от текущего уровня выполнения. Отметим, что уровни a, b, c не могут быть установлены, а запрос на выполнение помеченных ими процессов не меняет текущий уровень выполнения. Кроме того, подобные процессы не уничтожаются при смене уровня выполнения. Уничтожаются они, только если соответствующие им строки содержат значение off в поле действие, если эти строки удаляются из файла /etc/inittab, или если init переходит в однопользовательский режим. действие


Ключевое слово в поле действие определяет дисциплину обработки процесса, указанного в данной строке. Программа init распознает следующие действия:

respawn

Если процесс не существует, то запустить его, не ждать завершения (продолжать просмотр файла inittab), после завершения процесса перезапустить его. Если процесс уже существует, ничего не делать и продолжать просмотр файла inittab. wait

При переходе на уровень_выполнения, совпадающий с указанным в строке, запустить процесс и ожидать его завершения. При всех последующих просмотрах файла inittab на том же уровне выполнения игнорировать строку. once

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

Эта строка будет обработана только один раз во время чтения init'ом файла inittab при начальной загрузке системы. Программа init запускает процесс и не ожидает его завершения. Когда процесс завершится, он не перезапускается. Чтобы это действие выполнялось, поле уровень_выполнения должно быть пустым или соответствовать уровню выполнения процесса init во время загрузки системы. Спецификацией boot помечают функции инициализации, следующие за аппаратной загрузкой системы. bootwait

Эта строка будет обработана один раз при переходе init из однопользовательского режима в многопользовательский после загрузки системы. (Если действие initdefault соответствует уровню выполнения 2, то указанный в строке процесс будет запущен сразу после загрузки системы). Программа init запускает процесс, дожидается его завершения и после этого не перезапускает процесс. powerfail

Выполнять указанный в строке процесс только при получении init'ом сигнала об ошибке питания SIGPWR. powerwait

Выполнять указанный в строке процесс только при получении init'ом сигнала об ошибке питания SIGPWR и продолжать обработку файла inittab лишь после завершения процесса. off



Если процесс, ассоциированный с данной строкой, выполняется, ему посылается предупреждающий сигнал SIGTERM и дается 20 секунд на завершение, после чего он принудительно терминируется сигналом SIGKILL. Если процесс не существует, строка игнорируется. ondemand

Это действие является синонимом respawn, но используется только со значениями a, b и c в поле уровень_выполнения. initdefault

Строка, в которой указано это действие, используется только при первом обращении к процессу init. Она определяет уровень выполнения, устанавливаемый первоначально: выбирается максимальная из цифр, указанных в поле уровень_выполнения. Если поле уровня пусто, оно рассматривается как содержащее 0123456 и, следовательно, устанавливается уровень выполнения 6. Если в файле /etc/inittab нет строки с действием initdefault, то начальное значение уровня выполнения запрашивается у пользователя в момент загрузки системы. sysinit

Строки этого типа выполняются перед тем, как init попытается получить доступ к консоли (то есть перед выводом приглашения Console login:). Обычно подобные строки используются только для инициализации устройств, с которых init может попытаться запросить уровень выполнения. Команды из этих строк выполняются с ожиданием завершения.

процесс

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

sh -c 'exec процесс'

Тем самым в поле процесс может стоять любая конструкция, синтаксически корректная с точки зрения shell'а. Чтобы употребить комментарий, нужно воспользоваться записью ;#комментарий.

СМ. ТАКЖЕ

, , , .

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

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









INNCONFVAL(1)


ИМЯ

innconfval - получает параметры конфигурации InterNetNews

СИНТАКСИС

innconfval [ -f ] [ parameter... ]

ОПИСАНИЕ

Innconfval печатет значения параметров, указанных в командной строке. Значения берутся из файла inn.conf(5) и описываются там же.

ИСТОРИЯ

Написана Rich $alz для InterNetNews.

Эта версия 1.3, датированная 1993/01/29.

СМ. ТАКЖЕ

libinn(3), inn.conf(5).



INODE(4)


НАЗВАНИЕ

inode - формат описателя файла

СИНТАКСИС

#include <sys/types.h> #include <sys/ino.h>

ОПИСАНИЕ

В файловой системе описатель обычного файла или каталога имеет следующую структуру, определенную во включаемом файле <sys/ino.h>:

/* Структура описателя файла в том виде, как она хранится на диске. */

struct dinode { ushort di_mode; /* Режим и тип файла */ short di_nlink; /* Количество ссылок на файл */ ushort di_uid; /* Идентификатор владельца */ ushort di_gid; /* Идентификатор группы */ off_t di_size; /* Размер файла в байтах */ char di_addr[40]; /* Адреса блоков на диске */ time_t di_atime; /* Время последнего доступа */ time_t di_mtime; /* Время последней модификации */ time_t di_ctime; /* Время последнего изменения статуса файла */ };

/* Из 40 байт для адресов используется 39: это 13 адресов по 3 байта каждый. */

По поводу типов off_t и time_t см. .

СМ. ТАКЖЕ

, , .



INSTALL(1M)


НАЗВАНИЕ

install - установка новых версий команд

СИНТАКСИС

/etc/install [-c каталог_1] [-f каталог_2] [-i] [-n каталог_3] [-m режим_доступа] [-u пользователь] [-g группа] [-o] [-s] файл [каталог ...]

ОПИСАНИЕ

Утилита install чаще всего используется в "make файлах" [см. ] для установки новой версии (инсталляции) файла (обычно измененной реализации какой-либо команды) в определенное место файловой системы. Каждый файл инсталлируется с помощью копирования его в соответствующий каталог, вследствие чего сохраняются первоначальные режим доступа и владелец. Утилита выдает сообщения о том, какие файлы заменяются или создаются и где они находятся.

Если не указаны опции или каталоги, утилита install будет искать файл с указанным именем в стандартном наборе каталогов (/bin, /usr/bin, /etc, /lib и /usr/lib в указанном порядке). Как только файл найден, install сообщает о его обновлении и выполняет копирование новой версии. Если файл не найден, утилита констатирует это и прекращает работу без каких-либо иных действий.

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

Утилита install обрабатывает следующие опции:

-c каталог_1

Новая команда (файл) инсталлируется в специфицированный каталог_1 только в том случае, если команда там не найдена. В противном случае install выдает сообщение о том, что файл уже существует и кончает работу, не изменяя его. Другие каталоги (из стандартного списка или указанные после файла) не рассматриваются. Опция может использоваться отдельно или вместе с опцией -s.

-f каталог_2

Файл инсталлируется в каталог_2 независимо от того, существует там одноименный файл или нет. Если инсталлируемый файл еще не существует, то режим доступа и владелец нового файла получат значения 755 и bin соответственно. Если файл уже существует, то режим доступа и владелец останутся прежними. Другие каталоги (из стандартного списка или указанные после файла) не рассматриваются. Опция может использоваться отдельно или вместе с опциями -o или -s.

-i Игнорировать стандартный список каталогов, поиск производится только в каталогах, указанных после файла. Опция может использоваться отдельно или вместе с любой другой опцией, кроме -c и -f.

-n каталог_3


Если файл не найден ни в одном из каталогов, он помещается в каталог_3. Режим доступа и владелец нового файла получат значения 755 и bin соответственно. Опция может использоваться отдельно или вместе с любой другой опцией, кроме -c и -f.

-m режим_доступа Для нового файла устанавливается заданный режим_доступа. Опция доступна только суперпользователю.

-u пользователь

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

-g группа

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

-o Если файл, одноименный с заданным, найден, то при использовании данной опции он копируется в OLDфайл в том каталоге, где он был найден. Данная опция полезна при инсталляции часто используемых файлов, вроде /bin/sh или /etc/getty, когда существующий файл удалять было бы неразумно. Опция может использоваться отдельно или вместе с любой другой опцией, кроме -c.

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

СМ. ТАКЖЕ

.









INSTALL(8)


НАЗВАНИЕ

install - программа-оболочка инсталляции

СИНТАКСИС

/etc/install [device]

ОПИСАНИЕ

/etc/install в программе используется для инсталляции дискет дистрибуции (или прикладных программ) системы UNIX. Она выполняет следующие функции:

Выдает подсказки для установки дискет. Выделяет файлы с помощью утилиты . Выполняет программы /once/init.* на каждой дискете, после того, как они будут выделены. Удаляет программы /once/init.* по окончании инсталляции.

Необязательный аргумент в командной строке задает используемое устройство. По умолчанию этим устройством является /dev/install, которое связывается с /dev/rfd0.

ФАЙЛЫ

/etc/install /once/init.*



INTRO(1)


НАЗВАНИЕ

intro - введение в описание команд и прикладных программ

ОПИСАНИЕ

В этом разделе описаны в алфавитном порядке общедоступные команды. Некоторые различия в назначении команд отражены в заголовках:

1 Команды общего назначения 1C Коммуникационные команды 1G Графические команды

СИНТАКСИС

Если не оговорено противное, описываемые в этом разделе команды ожидают опции и другие аргументы в следующем формате:

имя [-опция ...] [аргумент_команды ...]

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

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

имя Имя выполняемого файла.

опция (Перед ней всегда стоит знак -) флаг... или флаг аргумент_опции[,...]

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

аргумент_опции

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

аргумент_команды Маршрутное имя (или другой аргумент команды), не начинающийся со знака -, или знак - как таковой, обозначающий стандартный ввод.

Стандартный синтаксис команд: правила

Эти правила не поддерживаются всеми имеющимися на данный момент командами, но все новые команды будут удовлетворять им. Команда должна использоваться всеми shell-программами для разбора позиционных параметров и проверки опций на корректность. Она поддерживает правила 3-10, описанные ниже. Выполнение остальных правил должны обеспечивать сами команды.

Имя команды должно иметь длину от двух до девяти символов. Имя команды должно состоять только из малых букв и цифр. Флаги должны состоять только из одного символа. Перед каждой опцией должен стоять знак -. Опции без аргументов могут быть сгруппированы после указания одного знака -. Первый аргумент_опции должен быть отделен от флага пробелом. Аргумент_опции не может быть необязательным. Группы аргументов_опции, следующие за флагом, должны отделяться друг от друга либо запятыми, либо пробелами, но в последнем случае аргументы следует заключать в кавычки, например -o xxx,z,yy или -o "xxx z yy". Все опции должны указываться перед аргументами_команды. Для обозначения конца опций может использоваться последовательность --. Относительный порядок опций не должен играть роль. Относительный порядок аргументов_команды может играть роль в зависимости от используемой команды. Знак -, перед которым и после которого стоит пробел, может использоваться только для обозначения стандартного ввода.


СМ. ТАКЖЕ

.

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

Предисловие к настоящему Справочнику.

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

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

СЮРПРИЗЫ

Увы, многие команды не придерживаются описанного выше синтаксиса.

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









INTRO(2)


НАЗВАНИЕ

intro - введение в описание системных вызовов и номеров ошибок

СИНТАКСИС

#include <errno.h>

ОПИСАНИЕ

В этом разделе описываются все системные вызовы. Большинство из них имеют одно или несколько значений кода завершения при ошибке. Состояние ошибки определяется возвращением значения, невозможного в другом случае. Почти всегда это -1 или указатель NULL; детали оговариваются при описании каждого вызова. Номер ошибки доступен также через внешнюю переменную errno. Эта переменная не обнуляется при успешных вызовах, поэтому имеет смысл использовать ее значение только в случае обнаружения ошибки.

В описании каждого системного вызова приводится список возможных номеров ошибок. Ниже приводится полный список номеров ошибок и их мнемонических имен, как они определены во включаемом файле <errno.h>.

1 EPERM Не владелец

Обычно эта ошибка указывает на попытку модифицировать файл, доступ к которому разрешен только его владельцу и суперпользователю. 2 ENOENT Не найден файл или каталог

Эта ошибка имеет место, если имя файла указано и файл должен был бы существовать, однако его нет; или если один из каталогов, указанных в маршрутном имени, не существует. 3 ESRCH Нет такого процесса

Процесс, соответствующий заданному идентификатору процесса (pid) в системном вызове или , не может быть найден. 4 EINTR Прерывание системного вызова

Асинхронный сигнал (такой как сигнал прерывания или выхода), перехватываемый пользователем, пришел во время выполнения системного вызова. Если после обработки сигнала будет продолжено выполнение программы, то системный вызов завершится с ошибкой. 5 EIO Ошибка ввода/вывода

Обнаружена ошибка ввода/вывода. Эта ошибка может иногда иметь место во время вызова, который следует за вызовом, к которому на самом деле относится эта ошибка. 6 ENXIO Неверное устройство или адрес

Ввод/вывод в специальный файл ссылается на устройство, которое не существует; или исчерпаны лимиты устройства для ввода/вывода. Эта ошибка может также иметь место, если магнитофон находится в пассивном состоянии или не установлен пакет дисков. 7 E2BIG Длинный список аргументов


При обращении к системному вызову из семейства задан список аргументов, содержащий более 5120 байт. 8 ENOEXEC Неверный формат выполняемого файла

Сделан запрос на выполнение файла, который, хотя и имеет соответствуюшие права, не начинается с допустимого магического числа [см. a.out(4)]. 9 EBADF Неверный номер файла

Или дескриптор файла указывает на неоткрытый файл, или запрос на чтение (соответственно запись) сделан для файла, открытого только для записи (соответственно чтения). 10 ECHILD Нет порожденных процессов

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

Системный вызов завершился аварийно, так как системная таблица процессов полна или пользователю не разрешено более создавать новые процессы. 12 ENOMEM Исчерпано пространство

Во время выполнения системных вызовов , , или программе потребовалось места в памяти больше, чем система может выделить. Это не временное условие; максимальный размер пространства является системным параметром. Ошибка может также иметь место, если набор секций команд данных и стека требует слишком много сегментных регистров или, если при вызове недостаточно места в области подкачки. 13 EACCES Нарушение прав доступа

Была предпринята попытка получить доступ к файлу, а прав для этого нет. 14 EFAULT Недопустимый адрес

Произошло прерывание при попытке использования аргументов системного вызова. 15 ENOTBLK Требуется блочное устройство

Не блочный файл указан там, где ожидался блочный, например, в вызове . 16 EBUSY Устройство или ресурс заняты

Была сделана попытка смонтировать устройство, которое уже смонтировано, или была предпринята попытка размонтировать устройство, на котором находится активный файл (открытый файл, текущий каталог, смонтированный файл или активная секция команд). Эта ошибка также имеет место при попытке разрешить сбор статистики, если он уже разрешен. 17 EEXIST Файл уже существует

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



Была предпринята попытка создать ссылку на файл, расположенный на другом устройстве. 19 ENODEV Неподходящее устройство

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

Там где ожидалось имя каталога, указано нечто другое; например, в маршрутном имени или в качестве аргумента системного вызова . 21 EISDIR Попытка записи в каталог

22 EINVAL Недопустимый аргумент

Недопустимое значение аргумента (например, размонтирование несмонтированного устройства; указание неопределенного сигнала при вызове или ; чтение или запись в файл, для которого вызов вернул отрицательный указатель). Также устанавливается математическими функциями, описанными в разделе 3M настоящего Справочника. 23 ENFILE Переполнена таблица файлов

Системная таблица открытых файлов переполнена и временно не может быть выполнен системный вызов . 24 EMFILE Слишком много открытых файлов

Никакой процесс не может иметь больше, чем NOFILES (по умолчанию 20) одновременно открытых дескрипторов файлов. 25 ENOTTY Не символьное устройство

Была предпринята попытка выполнить системный вызов к файлу, который не является специальным символьным. 26 ETXTBSY Перегружена секция команд

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

Размер файла превысил максимально допустимое значение ULIMIT [см. ]. 28 ENOSPC Исчерпано пространство на устройстве

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

Аргументом системного вызова является канал. 30 EROFS Смонтировано только для чтения

Попытка модифицировать файл или каталог на устройстве, смонтированном только для чтения. 31 EMLINK Слишком много ссылок



Была предпринята попытка создать более чем 100 ссылок на файл. 32 EPIPE Канал разрушен

Была предпринята попытка записать в канал, из которого ни один процесс не читает данных. При этом обычно генерируется сигнал; если сигнал игнорируется, то возвращается ошибка. 33 EDOMВыход за границы области определения

Аргумент функции, описанной в разделе 3M, лежит вне ее области определения. 34 ERANGE Переполнение

Результат функции, описанной в разделе 3M, непредставим с допустимой в машине точностью. 35 ENOMSG Нет сообщений такого типа

Была предпринята попытка получить сообщение типа, который не существует в указанной очереди сообщений [см. ]. 36 EIDRM Идентификатор удален

Эта ошибка возвращается процессам, которые возобновляют выполнение из-за удаления идентификатора очереди сообщений, семафора или разделяемого сегмента из системной таблицы имен [см. , , ]. 37-44 Зарезервированные номера

45 EDEADLK Тупик обнаружен и обойден

Была обнаружена и исправлена тупиковая ситуация. Эта ошибка свойственна операциям блокировки файлов и их частей. 46 ENOLCK Ошибка блокировки

При выполнении установка или снятие блокировки файла не может быть произведено, так как в системе не осталось больше места. 60 ENOSTR Не псевдоустройство

Попытка выполнить системные вызовы и для дескриптора файла, а файл не является псевдоустройством. 62 ETIME Истекло время для операции с псевдоустройством

Время, отведенное на вызов для псевдоустройства, истекло. Причина этой ошибки для разных устройств разная - возможно, проявился дефект аппаратуры, или, быть может, виновата программа. Может быть, для операции просто отведено недостаточное время. Результат операции неопределен. 63 ENOSR Исчерпаны ресурсы псевдоустройств

При попытке выполнить системный вызов для псевдоустройства не было доступных очередей или структур данных. 64 ENONET Машина не в сети

Эта ошибка возможна только при работе с системой разделения удаленных файлов (РУФ). Она имеет место, когда пользователь пытается афишировать, скрывать, монтировать, размонтировать удаленные ресурсы в то время, когда компьютер еще не проделал все положенные процедуры для подключения к сети. 65 ENOPKG Не та конфигурация



Эта ошибка имеет место, когда пользователь пытается использовать системный вызов, не входящий в текущую конфигурацию системы. 66 EREMOTE Удаленный ресурс

Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается афишировать ресурс, который не находится на локальной машине, или пытается монтировать/размонтировать устройство, которое находится на удаленной системе. 67 ENOLINK Разорвана связь

Эта ошибка возможна только при работе с РУФ. Она имеет место, когда происходит обращение к удаленной системе, связи с которой в данный момент нет. 68 EADV Ошибка афиширования

Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается афишировать ресурс, который уже афиширован, или пытается прекратить работу РУФ или начать размонтирование, когда есть еще афишированные ресурсы. 69 ESRMNT Есть смонтированные

Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается прекратить работу РУФ в то время, когда есть еще ресурсы, смонтированные с удаленной системы. 70 ECOMM Ошибка связи

Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается послать сообщение на удаленную машину, связи с которой в данный момент нет. 71 EPROTO Ошибка протокола

Обнаружена какая-либо ошибка протокола. Эта ошибка специфична для различных устройств, но не означает сбоя оборудования. 74 EMULTIHOP Нет прямой связи

Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается получить доступ к удаленным ресурсам, которые напрямую недоступны. 77 EBADMSG Недопустимое сообщение

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

Управляющая информация или переданный дескриптор файла.

Переданный дескриптор файла.

Управляющая информация или данные.

83 ELIBACC Нет доступа к разделяемой библиотеке

Попытка выполнить вызов для файла a.out, который ссылается на разделяемую библиотеку, а библиотека не существует или у пользователя не хватает прав для ее использования. 84 ELIBBAD Повреждение разделяемой библиотеки



Попытка выполнить вызов для файла a.out, который ссылается на разделяемую библиотеку, а не может загрузить эту библиотеку. Возможно, структура разделяемой библиотеки нарушена. 85 ELIBSCN Повреждение секции библиотек

Попытка выполнить вызов для файла a.out, который ссылается на разделяемую библиотеку, а в секции библиотек (.lib) файла a.out находятся неверные данные. В секции библиотек хранятся сведения для о том, какие разделяемые библиотеки требуются. Возможно, структура файла a.out нарушена. 86 ELIBMAX Много ссылок на разделяемые библиотеки

Попытка выполнить вызов для файла a.out, который использует больше разделяемых библиотек, чем разрешено в данной конфигурации системы. 87 ELIBEXEC Выполняется разделяемая библиотека

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

ОПРЕДЕЛЕНИЯ

Идентификатор процесса (pid). Каждый активный процесс в системе имеет уникальный номер (положительное целое число) называемый идентификатором процесса. Значение этого идентификатора лежит в пределах от 0 до 30000.

Идентификатор родительского процесса (ppid). Новый процесс создан активным в данный момент процессом [см. ], который называется родительским.

Идентификатор группы процессов. Каждый активный процесс является членом группы процессов, которая идентифицируется положительным целым числом, называемым идентификатором группы процессов. Этим идентификатором является идентификатор лидера группы. Группировка процессов позволяет посылать сигналы между взаимосвязанными процессами [см. ].

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

Реальный идентификатор пользователя и реальный идентификатор группы. Каждый пользователь, известный системе, идентифицируется положительным целым числом (от 0 до 65535), называемым реальным идентификатором пользователя.



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

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

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

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

Специальные процессы. Процессы, имеющие идентификаторы процесса 0 и 1, являются специальными; в дальнейшем они называются proc0 и proc1.

Proc0 - это планировщик. Proc1 - процесс инициализации работы (init). Proc1 является предком любого другого процесса в системе и используется для контроля за структурой процессов.

Дескриптор файла. Дескриптор файла есть небольшое целое число, используемое для операций ввода/вывода в файл; он может принимать значения от 0 до (NOFILES - 1), поэтому процесс не может иметь одновременно открытыми более чем NOFILES дескрипторов файлов. Дескриптор файла возвращается такими системными вызовами, как или и используется как аргумент в системных вызовах, подобных , , и .

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



Эти символы могут быть любыми доступными символами из набора символов ASCII, кроме символов \0 (null) и /.

Не рекомендуется использовать в именах файлов символы *, ?, [ или ], так как shell трактует их особым образом [см. ]. Хотя это и разрешено, но не рекомендуется использовать в именах файлов управляющие символы.

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

Если маршрутное имя начинается с символа /, то маршрут начинается с корневого каталога. Иначе, маршрут начинается с текущего рабочего каталога.

Одиночный символ / обозначает корневой каталог.

Если не оговорено противное, пустое маршрутное имя рассматривается как имя несуществующего файла.

Каталог. Элементы каталога называются ссылками на файл. Любой каталог содержит по крайней мере две ссылки: . и .., указывающие, соответственно, на сам каталог и на вышележащий каталог (надкаталог).

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

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

Действующий идентификатор пользователя процесса есть идентификатор суперпользователя. Действующий идентификатор пользователя процесса совпадает с идентификатором владельца файла и соответствующие биты для владельца в режиме доступа к файлу (0700) равны 1. Действующий идентификатор пользователя процесса не совпадает с идентификатором владельца файла, но действующий идентификатор группы процесса совпадает с идентификатором группы файла, и соответствующие биты для группы в режиме доступа к файлу (0070) равны 1. Действующий идентификатор пользователя процесса не совпадает с идентификатором владельца файла и действующий идентификатор группы процесса не совпадает с идентификатором группы файла, но соответствующие биты для прочих пользователей в режиме доступа к файлу (0007) равны 1.



Если все перечисленные условия ложны, прав на соответствующую операцию с файлом у процесса нет.

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

struct ipc_perm msg_perm; /* Структура прав на выполнение операций */ struct msg *msg_first; /* Указатель на первое сообщение в очереди */ struct msg *msg_last; /* Указатель на последнее сообщение */ ushort msg_cbytes;/* Текущее число байт в очереди */ ushort msg_qnum; /* Число сообщений в очереди */ ushort msg_qbytes;/* Макс. допустимое число байт в очереди */ ushort msg_lspid; /* Идентификатор последнего отправителя */ ushort msg_lrpid; /* Идентификатор последнего получателя */ time_t msg_stime; /* Время последн. отправления */ time_t msg_rtime; /* Время последнего получения */ time_t msg_ctime; /* Время последнего изменения */

msg_perm Структура типа ipc_perm, которая определяет права на операции с сообщениями (см. ниже). Эта структура содержит следующие элементы:

ushort cuid; /* Идентификатор пользователя, создавшего очередь */ ushort cgid; /* Идентификатор группы создателя очереди */ ushort uid; /* Идентификатор пользователя */ ushort gid; /* Идентификатор группы */ ushort mode; /* Права на чтение/запись */ ushort seq; /* Последовательность номеров используемых слотов */ key_t key; /* Ключ */

msg_first Указатель на первое сообщение в очереди. msg_last Указатель на последнее сообщение в очереди. msg_cbytes Текущее количество байт в очереди. msg_qnum Текущее количество сообщений в очереди. msg_qbytes Максимально допустимое количество байт в очереди. msg_lspid Идентификатор процесса, который последним выполнял операцию msgsnd [см. ]. msg_lrpid Идентификатор процесса, который последним выполнял операцию msgrcv [см. ]. msg_stime Время выполнения последней операции msgsnd. msg_rtime Время выполнения последней операции msgrcv. msg_ctime Время выполнения последней операции , которая изменила какой-либо элемент вышеописанной структуры.



Время измеряется в секундах, начиная с 00:00:00 1 января 1970 года (по Гринвичу).

Права на операции с сообщениями. В описании системных вызовов и права, требуемые для операций, записаны в фигурных скобках { и }. Права состоят в следующем:
00400Чтение для владельца. 00200Запись для владельца. 00040Чтение для группы. 00020Запись для группы. 00004Чтение для остальных. 00002Запись для остальных. Процессу предоставляются права на чтение и запись по идентификатору очереди, если истинно хотя бы одно из следующих условий:

Действующий идентификатор пользователя процесса есть идентификатор суперпользователя. Действующий идентификатор пользователя процесса совпадает со значением компонента msg_perm.cuid или msg_perm.uid структуры данных, ассоциированной с идентификатором очереди, и соответствующие биты для владельца в msg_perm.mode (0600) равны 1. Действующий идентификатор группы процесса совпадает со значением компонента msg_perm.cgid или msg_perm.gid структуры данных, ассоциированной с идентификатором очереди, и соответствующие биты для группы в msg_perm.mode (0060) равны 1. Соответствующие биты для прочих пользователей в msg_perm.mode (0006) равны 1.

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

Идентификатор множества семафоров. Идентификатор множества семафоров (semid) есть уникальное положительное целое число, возвращаемое системным вызовом . С каждым таким идентификатором ассоциировано множество семафоров и структура данных. Структура данных, обозначаемая semid_ds, содержит следующие компоненты:

struct ipc_perm sem_perm; /* Структура прав на выполнение операций */ struct sem *sem_base; /* Указатель на первый семафор в множестве */ ushort sem_nsems; /* Количество семафоров в множестве */ time_t sem_otime; /* Время последней операции */ time_t sem_ctime; /* Время последнего изменения */

sem_perm Структура типа ipc_perm, которая определяет права на операции с семафорами (см. ниже). Эта структура содержит следующие элементы:



ushort cuid; /* Идентификатор пользователя, создавшего множество семафоров */ ushort cgid; /* Идентификатор группы создателя множества семафоров */ ushort uid; /* Идентификатор пользователя */ ushort gid; /* Идентификатор группы */ ushort mode; /* Права на чтение/изменение */ ushort seq; /* Последовательность номеров используемых слотов */ key_t key; /* Ключ */

sem_base Указатель на первый семафор в множестве (см. ниже). sem_nsems Количество семафоров в множестве. Каждый семафор в множестве имеет целый положительный номер, называемый sem_num, и принимает последовательные значения от 0 до (sem_nsems - 1). sem_otime Время последней операции . sem_ctime Время последней операции , которая изменила какой-либо элемент вышеописанной структуры.

Время измеряется в секундах, начиная с 00:00:00 1 января 1970 года (по Гринвичу).

Семафор - это структура, содержащая следующие элементы:

ushort semval; /* Значение семафора */ short sempid; /* Идентификатор процесса, выполнявшего последнюю операцию */ ushort semncnt; /* Число процессов, ожидающих увеличения значения семафора */ ushort semzcnt; /* Число процессов, ожидающих обнуления значения семафора */

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

Права на операции с семафорами. В описании системных вызовов и права, требуемые для операций, записаны в фигурных скобках { и }. Права состоят в следующем:
00400Чтение для владельца. 00200Изменение для владельца. 00040Чтение для группы. 00020Изменение для группы. 00004Чтение для остальных. 00002Изменение для остальных. Процессу предоставляются права на чтение и изменение значений семафоров по идентификатору множества, если истинно хотя бы одно из следующих условий:



Действующий идентификатор пользователя процесса есть идентификатор суперпользователя. Действующий идентификатор пользователя процесса совпадает со значением компонента sem_perm.cuid или sem_perm.uid структуры данных, ассоциированной с идентификатором множества семафоров, и соответствующие биты для владельца в sem_perm.mode (0600) равны 1. Действующий идентификатор группы процесса совпадает со значением компонента sem_perm.cgid или sem_perm.gid структуры данных, ассоциированной с идентификатором множества семафоров, и соответствующие биты для группы в sem_perm.mode (0060) равны 1. Соответствующие биты для прочих пользователей в sem_perm.mode (0006) равны 1.

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

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

struct ipc_perm shm_perm; /* Структура прав на выполнение операций */ int shm_segsz; /* Размер сегмента */ struct region *shm_reg; /* Указатель на структуру области памяти */ char pad[4]; /* Информация для подкачки */ ushort shm_lpid; /* Идентификатор процесса, вып. последнюю операцию */ ushort shm_cpid; /* Идентификатор процесса, создавшего сегмент */ ushort shm_nattch;/* Число процессов, подсоединивших сегмент */ ushort shm_cnattch; /* Для shminfo */ time_t shm_atime; /* Время последнего подсоединения */ time_t shm_dtime; /* Время последнего отсоединения */ time_t shm_ctime; /* Время последнего изменения */

shm_perm Структура типа ipc_perm, которая определяет права на операции с разделяемыми сегментами (см. ниже). Эта структура содержит следующие элементы:



ushort cuid; /* Идентификатор пользователя, создавшего сегмент */ ushort cgid; /* Идентификатор группы создателя сегмента */ ushort uid; /* Идентификатор пользователя */ ushort gid; /* Идентификатор группы */ ushort mode; /* Права на чтение/изменение */ ushort seq; /* Последовательность номеров используемых слотов */ key_t key; /* Ключ */

shm_segsz Размер разделяемого сегмента памяти в байтах. shm_lpid Идентификатор процесса, последним выполнившего операцию . shm_cpid Идентификатор процесса, создавшего идентификатор разделяемого сегмента памяти. shm_nattch Счетчик количества процессов, к которым в данный момент подсоединен разделяемый сегмент памяти. shm_atime Время последней операции shmat(2). shm_dtime Время последней операции shmdt(2). shm_ctime Время последней операции , которая изменила какой-либо элемент вышеописанной структуры.

Время измеряется в секундах, начиная с 00:00:00 1 января 1970 года (по Гринвичу).

Права на операции с разделяемыми сегментами памяти. В описании системных вызовов и права, требуемые для операций, записаны в фигурных скобках { и }. Права состоят в следующем:
00400Чтение для владельца. 00200Запись для владельца. 00040Чтение для группы. 00020Запись для группы. 00004Чтение для остальных. 00002Запись для остальных. Процессу предоставляется право на чтение или запись в разделяемый сегмент памяти, если истинно хотя бы одно из следующих условий:

Действующий идентификатор пользователя процесса есть идентификатор суперпользователя. Действующий идентификатор пользователя процесса совпадает со значением компонента shm_perm.cuid или shm_perm.uid структуры данных, ассоциированной с идентификатором разделяемого сегмента, и соответствующие биты для владельца в shm_perm.mode (0600) равны 1. Действующий идентификатор группы процесса совпадает со значением компонента shm_perm.cgid или shm_perm.gid структуры данных, ассоциированной с идентификатором разделяемого сегмента, и соответствующие биты для группы в shm_perm.mode (0060) равны 1. Соответствующие биты для прочих пользователей в shm_perm.mode (0006) равны 1.



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

Псевдоустройства. Набор механизмов ядра операционной системы UNIX, поддерживающих развитие сетевых услуг и коммуникационных драйверов, называется механизмом псевдоустройств. Он определяет стандарт интерфейса для посимвольного ввода/вывода внутри ядра и между ядром и пользовательскими процессами. Механизм псевдоустройств состоит из утилит, средств ядра и набора структур данных.

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

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

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

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

Вниз. В потоке - направление от истока к драйверу.

Вверх. В потоке - направление от драйвера к истоку.

Сообщение. В потоке сообщение - это один или более блоков данных вместе с управляющими структурами псевдоустройства. Определено несколько типов сообщений; тип идентифицирует содержание сообщения. Механизм сообщений - единственный способ передачи данных в потоке.



Очередь сообщений. В потоке очередь сообщений - это список сообщений, ожидающих обработки модулем или драйвером.

Очередь чтения. В потоке очередь чтения - это очередь сообщений, направленных вверх.

Очередь записи. В потоке очередь записи - это очередь сообщений, направленных вниз.

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

ПРИМЕЧАНИЯ

Информацию, относящуюся к системе разделения удаленных файлов (РУФ), следует принимать во внимание, только если на Вашей установке есть соответствующее аппаратное и программное обеспечение; в стандартную конфигурацию оно не входит.

СМ. ТАКЖЕ

INTRO(1M)


НАЗВАНИЕ

intro - введение в описание команд и прикладных программ для обслуживания системы

ОПИСАНИЕ

В этом разделе описаны в алфавитном порядке команды, которые используются в основном для обслуживания системы и в администраторских целях. Команды из этого раздела должны использоваться вместе со средствами, описанными в Справочниках пользователя и программиста. Ссылки с номерами разделов 1M, 7 и 8 указывают на статьи из настоящего Справочника. Раздел 1 входит в Справочник пользователя, а разделы 2, 3, 4, 5 - в Справочник программиста.

СИНТАКСИС

Если не оговорено противное, описываемые в этом разделе команды ожидают опции и другие аргументы в следующем формате:

имя [-опция ...] [аргумент_команды ...]

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

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

имя Имя выполняемого файла.

опция (Перед ней всегда стоит знак -)

флаг... или флаг аргумент_опции[,...]

флаг Одна буква, представляющая опцию без аргумента. Заметим, что несколько флагов могут быть сгруппированы после одного знака - [см. , правило 5].

аргумент_опции

Аргумент (цепочка символов), согласованный с указанным перед ним флагом. Заметим, что следующие за флагом группы аргументов_опции должны отделяться друг от друга либо запятыми, либо пробелами, но в этом случае они должны также быть заключены в кавычки [см. , правило 8].

аргумент_команды

Маршрутное имя (или другой аргумент команды), не начинающийся со знака -, или знак - как таковой, обозначающий стандартный ввод.

ПРИМЕЧАНИЯ

Информацию, относящуюся к системе разделения удаленных файлов (РУФ), следует принимать во внимание, только если на Вашей установке есть соответствующее аппаратное и программное обеспечение; в стандартную конфигурацию оно не входит.

СМ. ТАКЖЕ

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

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

ДИАГНОСТИКА

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

СЮРПРИЗЫ

Увы, многие команды не придерживаются описанного выше синтаксиса.



INTRO(HW)


НАЗВАНИЕ

intro - Введение в аппаратно-зависимые средства и файлы.

ОПИСАНИЕ

В этом разделе (HW) содержится информация, необходимая для обслуживания системы. Здесь описываются файлы, устройства, таблицы и программы, которые нужны для поддержания всей системы и непосредственно связаны с типом компьютера, на котором функционирует система. Этот раздел предназначен для компьютеров с центральными процессорами 86-го семейства INTEL: 8086, 8088, 80286 и 80386.



IO(4)


НАЗВАНИЕ

io - спецификация дисковых устройств

ОПИСАНИЕ

Файл /usr/include/sys/io.h содержит основные параметры для различных типов дисковых устройств:

Диски с SMD интерфейсом. Диски с SCSI интерфейсом. Дискеты.

для различных технологий изготовления:

Несъемные диски типа "Винчестер". Пакеты магнитных дисков. Несъемные/с емные диски.

и для различных скоростей вращения и емкости. Эти основные параметры описывают дисковые устройства для соответствующих драйверов ввода/вывода.

Для каждого дискового устройства в файле io должна быть строка вида

#define v_xxx параметры

Параметры соответствуют элементам (начиная со 2-го) структуры dkvol, описанной во включаемом файле <sys/ disk.h>. Следовательно, строка

#define v_xxx 0, 9, 0, 2, 850, 0, 0, 3, 3

описывает диск с 850 цилиндрами, так как это пятый параметр, а в структуре dkvol поле с числом цилиндров является шестым.

Связь между описанием диска и элементом таблицы томов драйвера дисков устанавливается во время конфигурирования системы. Описание диска помещается в и ассоциируется с драйвером. Позиция в таблице томов определяет младший номер устройства.

Параметры и их значение:

тип_диска Параметр, зависящий от драйвера дисков. секторов_на_дорожке Количество килобайтных секторов, размещающихся на дорожке. смещение_в_номерах_головок Добавляется к номеру головки перед установкой головок; обычно 0. На некоторых устройствах тома различаются по битам в номере головки. число_головок Количество головок чтения/записи на устройстве. число_цилиндров Количество цилиндров на устройстве. скорость_вращения Параметр, зависящий от драйвера дисков.

Следующая информация используется при форматировании для оптимизации доступа к диску.

чередование_секторов

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


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

Время (в секторах) которое требуется контроллеру, дисководу и драйверу ввода/вывода для перехода к следующему цилиндру.

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

ФАЙЛЫ

/usr/include/sys/io.h /usr/include/sys/disk.h

СМ. ТАКЖЕ

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









IOCTL(2)


НАЗВАНИЕ

ioctl - управление устройствами

СИНТАКСИС

ioctl (fildes, command, arg) int fildes, command;

ОПИСАНИЕ

Системный вызов ioctl выполняет различные управляющие действия над обычными устройствами и псевдоустройствами. Для файлов, не являющихся псевдоустройствами, действия, которые выполняет этот системный вызов, зависят от устройства. Аргументы command и arg передаются в файл, ассоциированный с дескриптором fildes, и интерпретируются драйвером устройства. Подобный способ управления для обычных устройств используется редко; основные операции ввода/вывода выполняются с помощью системных вызовов и .

Действия над псевдоустройствами, выполняемые с помощью системного вызова ioctl, описаны в .

Аргумент fildes - это открытый дескриптор файла, являющегося устройством. Аргумент command задает выполняемые действия и зависит от устройства, с которым ведется работа. Наконец, arg задает дополнительную информацию, которая может потребоваться для выполнения указанных действий. Тип аргумента arg зависит от конкретного управляющего действия и является либо целым, либо указателем на специфичную для устройства структуру.

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

Системный вызов ioctl завершается неудачей для файлов любого типа, если выполнено хотя бы одно из следующих условий:

[EBADF] Аргумент fildes не является корректным дескриптором открытого файла. [ENOTTY] Аргумент fildes не связан с устройством, драйвер которого отрабатывает управляющие функции. [EINTR] Во время выполнения системного вызова перехвачен сигнал.

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

[EFAULT] Действие command требует обмена данными с буфером, указанным с помощью аргумента arg, но сам буфер или его часть находятся за пределами отведенного процессу адресного пространства. [EINVAL] Значения аргументов command или arg некорректны для данного устройства. [EIO] Обнаружена ошибка ввода/вывода. [ENXIO] Значения аргументов command или arg корректны для данного драйвера, но над данным устройством указанный запрос не может быть выполнен. [ENOLINK] Аргумент fildes является дескриптором файла на удаленном компьютере, связи с которым в данный момент нет.

Ошибки псевдоустройств описаны в .

СМ. ТАКЖЕ

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

ДИАГНОСТИКА

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



IOS(7)


НАЗВАНИЕ

ios - дополнительный сегмент ввода/вывода

СИНТАКСИС

#include <sys/user.h>

ОПИСАНИЕ

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

В структуре user появились следующие дополнительные компоненты:

caddr_t u_iospad; /* Физич. адрес доп. сегмента */ caddr_t u_iosvad; /* Вирт. адрес доп. сегмента */ long u_iossiz; /* Размер доп. сегмента */

Значения всех этих компонентов должны быть кратны двум килобайтам (величина NBPC в файле <sys/param.h>).

ПРИМЕР

Продемонстрируем управление графическим контроллером AGC-1 из прикладной программы. Для этого надо иметь доступ к памяти контроллера, что и достигается с помощью ios. Память контроллера расположена с адреса 0xfcc00000 и имеет длину 0x240000 (вместе с видеопамятью).

Установка процессом соотвествующих полей структуры user осуществляется с помощью открытия специального файла /dev/agc. При этом выполняется функция agcopen драйвера AGC (ее текст хранится в файле /usr/src/uts/io/agc.c). Функция устанавливает поля

u.u_iosvad = (caddr_t) 0xfcc00000; u.u_iospad = (caddr_t) 0xfcc00000; u.u_iossiz = 0x240000;

Для доступа к любому внутреннему регистру конроллера AGC-1 используются два регистра, вынесенных на внешнюю шину: регистр адреса - для указания номера внутреннего регистра, регистр данных - для указания данных, которые должны быть занесены во внутренний регистр (или прочитаны из него). Регистры имеют следующие адреса: регистр адреса - 0xfcc3c000, регистр данных - 0xfcc3c002.

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


#include <fcntl.h>

#define HEIGHT 0x008A #define ZOOM 0x00EA

typedef unsigned short ushort;

main (argc, argv) int argc; char *argv[]; { int i, j, k, fd, old_value;

if ((fd = open ("/dev/agc", 0, O_RDWR)) < 0) { perror ("\nOpen error /dev/agc :"); exit (0); }

/* Прочитаем значение высоты экрана в строках */ old_value = read_register (HEIGHT);

/* Будем изменять высоту экрана (сначала уменьшаем до нуля, а потом увеличиваем до исходного значения */ for (i=old_value; i>=1; i--) { write_register (HEIGHT, i); /* задержка */ for (j=0; j<1000; j++) k = j/231; }

for (i=1; i<=old_value; i++) { write_register (HEIGHT, i); for (j=0; j<1000; j++) k = j/231; }

/* Будем изменять регистр масштабирования */ for (i=0; i<16; i++) { write_register (ZOOM, (i | (i<<4)) << 8); sleep (1); } for (i=15; i>=0; i--) { write_register (ZOOM, (i | (i<<4)) << 8); sleep (1); }

close (fd); }

/* Запись в регистр контроллера */ void write_register (number, value) int number; /* Номер регистра */ int value; /* Значение регистра */ { ushort *adr= (ushort *) 0xfcc3c000; ushort *dat= (ushort *) 0xfcc3c002; ushort val;

*adr = number; *dat = value; }

/* Чтение регистра контроллера */ int read_register (number) int number; /* Номер регистра */ { ushort *adr= (ushort *) 0xfcc3c000; ushort *dat= (ushort *) 0xfcc3c002;

*adr = number; return ((int) *dat); }

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

Неосторожное использование ios может нарушить работу системы.

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









IPCRM(1)


НАЗВАНИЕ

ipcrm - удаление идентификаторов средств межпроцессной связи

СИНТАКСИС

ipcrm [-q ид_оч_сообщений] [-m ид_сег_памяти] [-s ид_семафора] [-Q ключ_сообщений] [-M ключ_сег_памяти] [-S ключ_семафора]

ОПИСАНИЕ

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

-q ид_оч_сообщений

Из системы удаляется идентификатор очереди сообщений ид_оч_сообщений и ликвидируются ассоциированные с ним очередь сообщений и структура данных.

-m ид_сег_памяти

Из системы удаляется идентификатор разделяемого сегмента памяти ид_сег_памяти. Сам сегмент и ассоциированная с ним структура данных ликвидируются после последнего отсоединения.

-s ид_семафора

Из системы удаляется идентификатор множества семафоров ид_семафора и ликвидируются ассоциированные с ним множество семафоров и структура данных.

-Q ключ_сообщений

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

-M ключ_сег_памяти

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

-S ключ_семафора

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

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

СМ. ТАКЖЕ

.

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



IPCS(1)


НАЗВАНИЕ

ipcs - выдача информации о состоянии средств межпроцессной связи

СИНТАКСИС

ipcs [-q] [-m] [-s] [-b] [-c] [-o] [-p] [-t] [-a] [-C образ_памяти] [-N файл_с_таблицей_имен]

ОПИСАНИЕ

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

-q Выводить информацию об используемых очередях сообщений. -m Выводить информацию об используемых разделяемых сегментах памяти. -s Выводить информацию об используемых семафорах.

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

-b Выводить информацию о наибольшем допустимом размере. Для очередей сообщений это максимальное число байт в сообщениях; для разделяемой памяти - размер сегментов; для семафоров - число семафоров в каждом множестве. Смысл информации в каждой колонке выдачи раз ясняется ниже.

-c Выводить входное и групповое имя создателя.

-o Выводить информацию об использовании. Для очередей сообщений - число сообщений в очереди и общее число байт в сообщениях; для разделяемых сегментов - число процессов, присоединенных к сегментам.

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

-t Выводить информацию о времени: время последней управляющей операции, изменившей права доступа - для всех средств связи между процессами. Время вызова операций: для очередей сообщений - последней msgsnd и последней msgrcv; для разделяемых сегментов памяти - последней shmat и последней shmdt; для семафоров - последней .

-a Использовать все опции, выводящие информацию. (Это просто краткая запись для -bcopt).

-C образ_памяти


Использовать файл образ_памяти вместо файла /dev/kmem.

-N файл_с_таблицей_имен

Использовать файл_с_таблицей_имен вместо подразумеваемого файла /unix.

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

T Тип средства связи:

q очередь сообщений; m разделяемый сегмент памяти; s семафор.

ID Идентификатор элемента средства связи (идентификатор очереди сообщений и т.д.).

KEY Ключ, использованный в качестве аргумента функций msgget, semget или shmget при создании элемента. (Замечание: при удалении сегмента разделяемой памяти ключ сегмента изменяется на IPC_PRIVATE до тех пор, пока все присоединенные процессы не отсоединят его.)

MODE

Режимы доступа и флаги элемента средства связи. Режим состоит из 11 символов, интерпретируемых следующим образом.

Первые два символа:

R если процесс ждет по msgrcv; S если процесс ждет по msgsnd; D если соответствующий разделяемый сегмент памяти удален. Он исчезнет после того, как последний присоединенный процесс отсоединит сегмент; C если соответствующий разделяемый сегмент памяти необходимо очистить при выполнении первого при соединения; - если соответствующий специальный флаг не уста новлен.

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

r если есть право на чтение; w если есть право на запись; a если есть право на изменение; - если данного права нет.

OWNER



Входное имя владельца элемента средства связи.

GROUP

Групповое имя владельца элемента средства связи.

CREATOR (a,c) Входное имя создателя элемента средства связи.

CGROUP (a,c)

Групповое имя создателя элемента средства связи.

CBYTES (a,o)

Число байт в сообщениях, находящихся в данный момент в соответствующей очереди.

QNUM (a,o)

Число сообщений, находящихся в данный момент в соответствующей очереди.

QBYTES (a,b)

Максимально допустимое количество байт в сообщениях из соответствующей очереди.

LSPID (a,p)

Идентификатор последнего процесса, пославшего сообщение в соответствующую очередь.

LRPID (a,p)

Идентификатор последнего процесса, получившего сообщение из соответствующей очереди.

STIME (a,t)

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

RTIME (a,t)

Время последнего получения сообщения из соответствующей очереди.

CTIME (a,t)

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

NATTCH (a,o) Количество процессов, присоединенных к соответствующему разделяемому сегменту памяти.

SEGSZ (a,b)

Размер разделяемого сегмента памяти.

CPID (a,p)

Идентификатор процесса, создавшего разделяемый сегмент памяти.

LPID (a,p)

Идентификатор последнего процесса, присоединившего или отсоединившего разделяемый сегмент памяти.

ATIME (a,t)

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

DTIME (a,t)

Время, когда было завершено последнее отсоединение разделяемого сегмента памяти.

NSEMS (a,b)

Число семафоров в множестве, связанном с данным элементом.

OTIME (a,t)

Время завершения последней семафорной операции с множеством, связанным с данным элементом.

ФАЙЛЫ

/unix Файл с системной таблицей имен. /dev/kmem Память. /etc/passwd Имена пользователей. /etc/group Имена групп.

СМ. ТАКЖЕ

.

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

СЮРПРИЗЫ

Во время выполнения команды ipcs состояние средств межпроцессной связи может измениться; таким образом, ipcs дает лишь хорошее приближение к действительности.









IPR(1)


ИМЯ

ipr, oldipr - Помещает файлы в очередь печатывающего устройства IMAGEN.

СИНТАКСИС

ipr[options][file...] oldipr[options][file...]

ОПИСАНИЕ

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

Команда oldipr аналогична команде ipr, но содержит в себе опцию -о и используется с imPRESS файлами старой версии.

Опциями являются:

-L language

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

-D string Приводит к вкючению параметра string в язык управления документацией для файлов, стоящих в очереди.

-P printer

Этот файл должен быть напечатан на печатающем устройстве, указанном параметром printer. По умолчанию значение параметра printer определяется как переменная PRINTER в файле /ets/default/imagen.

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

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

-r Уничтожаются связи в файлах после постановки их в очередь для печати.

-cn Печатает n копий.

-d Дополнительная информация печатается в целях отладки.

-o Определяет какой файл, стоящий в очереди, является файлом формата языка inPRESS в старой версии (до версии 1).

Команда ipr читает файл /etc/default/imagen, чтобы получить различные установки по умалчиванию. Полученными значениями и значениями по умалчиванию являются:

PRINTER=imagen

Имя печатывающего устройства IMAGEN. Оно может заменяться с помощью опции -P.

JAMPROOF=no


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

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

ФАЙЛЫ

/usr/bin/lp Система буферизации печатывающего устройства XENIX.

СМ. ТАКЖЕ

imagen(5), , , itroff(1),

ЗАМЕЧАНИЯ

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

АВТОР

Корпорация IMAGEN.









IPRINT(1)


ИМЯ

iprint - Преобразует текстовые файлы в DVI формат.

СИНТАКСИС

iprint [options][file...]

ОПИСАНИЕ

Команда iprint преобразует входные текстовые файлы, задаваемые аргументом file,в DVI формат. Сначала вывод в формате DVI должен быть преобразован до его печати на печатающем устройстве IMAGEN в формат печати imPRESS. Если не задана опция -i, то используется команда dviimp(1) для автоматического выполнения этого преобразования и печати результатов. Если не заданы имена file, то производится считывание стандартного ввода.

Опциями являются:

-ioutput Файл в формате imPRESS сохраняется в файле output вместо того, чтобы быть напечатанным. -bbanner Строка banner передается в качестве аргумента опции -b в команду dviimp. По умолчанию banner является именем первого файла ввода file. -cn Печатает n копий. -B Печатает на каждой странице непустую первую строку шрифтом с полужирным начертанием и пропускает предшествующие пустые строки. Это используется такими программами, как , которые формируют заголовок страниц. -ffont Использует следующий аргумент в качестве имени файла шрифта для текста. Шрифт с переменным шагом в общем случае будет производить непредсказуемые результаты. -Ffont Использует следующий аргумент в качестве имени файла шрифта для строки с полужирным начертанием заголовка. (Смотрите опцию -B). -on Печатает страницу с отступом (от левого края) в n пробелов. -ln Взять высоту страницы в n строк. -Draster Каталог, содержащий образы растра, и есть raster. По умолчанию каталог образов растров определяется посредством переменной RASTER в файле /etc/default/ imagen, и предполагается разрешающая способность в 240 точек растра (pixels) на дюйм. -d Производит пространный вывод для отладки. -v Производит более подробный вывод отладки.

Команда iprint производит считывание файла /etc/default/imagen для получения различных установок значений по умолчанию. Значениями полученными и значениями по умолчанию являются:

RASTER=/usr/lib/imagen/raster

Файлы растеризации шрифта находятся в каталоге с именем 240, в пределах этого каталога (т.е. raster/ 240). Это может отменятся опцией -D.

TMPDIR=/tmp


Каталог, в котором сохраняются временные файлы.

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

ФАЙЛЫ

tmpdir/dvi??????

Это - временные файлы, используемые под вывод в формате DVI, который производит команда dviimp. Значение аргумента tmpdir устанавливается посредством переменной TMPDIR в файле /etc/default/imagen.

raster/240/*

Образы растра основных резидентных шрифтов. Значения по умолчанию для аргумента raster определяются посредством переменной RASTER в файле /etc/default/ imagen, а могут быть заданы с помощью опции -D значения, отличные от заданных по умолчанию.

/usr/bin/dviimp Программа преобразования DVI формата в формат imPRESS.

СМ. ТАКЖЕ

dviimp(1), ,

ЗАМЕЧАНИЯ

Считается, что разрешающая способность устройства печати IMAGEN должна иметь значение 240 пикселей на дюйм.

Диагностическое сообщение "Font f version n" ("Шрифт f версия n") означает, что этот файл шрифта не является файлом формата RAS версии 0. Другие диагностические сообщения должены включать в себя пояснения.

АВТОР

Корпорация IMAGEN.









IPS(8)


НАЗВАНИЕ

ips, isbs, ipbs - программы обеспечения протоколов IMAGEN

СИНТАКСИС

/usr/lib/ips [options] [file] /usr/lib/isbs [options] [file] /usr/lib/isps [options] [file]

ОПИСАНИЕ

ips, isbs и ipbs представляют собой программные средства печати самого низкого уровня для принтера IMAGEN. Каждая из этих программ отвечает за свой вид связи. Они представляют собой интерфейс к программным средствам высокого уровня, обеспечивая им способ связи, практически независимый от вида этой связи.

ips посылает принтеру IMAGEN файлы, используя на линиях последовательной связи через порты RS-232C "протокол последовательных пакетов". Этот протокол обеспечивает обнаружение ошибок, повторную передачу, сообщения о состоянии, обнаружение неисправимых ошибок и учет использования принтера. Принтер IMAGEN должен быть сконфигурирован для передачи "последовательного пакета V1" на нужной скорости.

isbs поддерживает связь на линиях последовательной связи через порты RS-232C в соответствии с методом "потока последовательных байтов". Этот протокол выполняет управление потоком данных, но не обеспечивает обнаружение и исправление ошибок. Принтер IMAGEN должен быть сконфигурирован для поддержания протокола "потока последовательных байтов" на нужной скорости, а также должен использовать в качестве символа "EOF" (конца файла) 0x04, в качестве "кавычек" 0x02, обеспечивать прием 8-разрядных данных, управление потоком данных XON/XOFF и не должен игнорировать непечатные символы.

ipbs поддерживает метод "потока последовательных байтов", который в сущности аналогичен методу isbs, но предназначен для параллельных, а не последовательных портов. Принтер IMAGEN должен быть сконфигурирован для параллельного интерфейса, должен использовать в качестве символа "EOF" (конца файла) 0x04, в качестве "кавычек" 0x02 и не должен игнорировать непечатные символы.

Ни isbs, ни ipbs не ведут учет использования принтера. Следующая информация действительна для всех этих программ.



ISNAN(3C)


НАЗВАНИЕ

isnan: isnand, isnanf - проверить на принадлежность к числам с плавающей точкой

СИНТАКСИС

#include <ieeefp.h>

int isnand (dsrc) double dsrc;

int isnanf (fsrc) float fsrc;

ОПИСАНИЕ

Функции isnand и isnanf возвращают единицу, если аргумент dsrc или fsrc не является числом с плавающей точкой; в противном случае возвращается ноль.

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

Функция isnanf( ) реализована как макрос и определена в файле <ieeefp.h>.

СМ. ТАКЖЕ

.



ISSUE(4)


НАЗВАНИЕ

issue - идентификация входа

ОПИСАНИЕ

Файл /etc/issue содержит текст, выводимый программой getty на терминал перед приглашением войти в систему.

СМ. ТАКЖЕ

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



TTYNAME(3C)


НАЗВАНИЕ

ttyname, isatty - опрос имени терминала

СИНТАКСИС

char *ttyname (fildes) int fildes;

int isatty (fildes) int fildes;

ОПИСАНИЕ

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

Функция isatty возвращает 1, если fildes ассоциирован с терминалом, и 0 в противном случае.

ФАЙЛЫ

/dev/*

ДИАГНОСТИКА

Функция ttyname возвращает пустой указатель NULL, если fildes не описывает терминальное устройство в каталоге /dev.

ОГРАНИЧЕНИЯ

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



BESSEL(3M)


НАЗВАНИЕ

bessel: j0, j1, jn, y0, y1, yn - функции Бесселя

СИНТАКСИС

#include <math.h>

double j0 (x) double x;

double j1 (x) double x;

double jn (n, x) int n; double x;

double y0 (x) double x;

double y1 (x) double x;

double yn (n, x) int n; double x;

ОПИСАНИЕ

Функции j0 и j1 возвращают значения функций Бесселя первого рода, порядка 0 и 1 соответственно, для заданного аргумента x. Функция jn возвращает значение функции Бесселя первого рода, порядка n для заданного аргумента x.

Функции y0 и y1 возвращают значения функций Бесселя второго рода (или, иначе, функций Неймана), порядка 0 и 1, соответственно для заданного аргумента x. Функция yn возвращает значение функции Бесселя второго рода, порядка n для заданного аргумента x. Значение x должно быть положительным.

СМ. ТАКЖЕ

.

ДИАГНОСТИКА

При неположительных аргументах функции y0 и y1 возвращают значение -HUGE [см. ], а переменной errno присваивается значение EDOM. Кроме того, в стандартный протокол будет выдано сообщение о выходе за границы области определения.

При аргументах, слишком больших по абсолютной величине, функции j0, j1, y0 и y1 возвращают нулевое значение и переменной errno присваивается значение ERANGE. Кроме того, в стандартный протокол будет выдано сообщение о потере значимости.

Изложенная процедура обработки ошибок может быть изменена посредством функции .



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].

СМ. ТАКЖЕ

.









JOIN(1)


НАЗВАНИЕ

join - оператор реляционной базы данных

СИНТАКСИС

join [-aномер_файла] [-eцепочка_символов] [-j[номер_файла] номер_поля] [-o список] [-tсимвол] файл1 файл2

ОПИСАНИЕ

Команда join выдает на стандартный вывод результат соединения двух отношений, задаваемых строками файла1 и файла2. Если вместо файла1 стоит -, то используется стандартный ввод.

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

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

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

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

-aномер_файла В дополнение к обычному выводу выдать строку для каждой непарной строки из файла с указанным номером (1 или 2). -eцепочка_символов Заменить пустые поля вывода заданной цепочкой_символов. -j[номер_файла] номер_поля Произвести соединение по указанному полю для файла с заданным номером. Если номер_файла опущен, использовать указанное поле в обоих файлах. -o список Каждую строку вывода обрамлять полями, определенными в списке. Каждый элемент списка имеет вид номер_файла.номер_поля. -tсимвол Использовать символ в качестве разделителя. Каждое вхождение символа в строку значимо. Указанный символ используется как разделитель и при вводе, и при выводе.

ПРИМЕР

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

join -j1 4 -j2 3 -o 1.1 2.1 1.6 -t: /etc/passwd \ /etc/group

СМ. ТАКЖЕ

, , , .

СЮРПРИЗЫ

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

Соглашения команд join, , , и совершенно различны.

Если имя файла состоит из цифр, оно может провзаимодействовать с опцией -o, стоящей непосредственно перед аргументами-файлами



KBMODE(ADM)


НАЗВАНИЕ

kbmode - установка клавиатурного режима или проверка поддержки клавиатуры.

СИНТАКСИС

kbmode command [file]

ОПИСАНИЕ

Эта команда может быть использована для определения того, поддерживает ли ваша клавиатура режим AT. Если да, то эта утилита может осуществлять переключение между режимами AT и XT.

Если задан аргумент file, то он должен представлять собой tty-устройство одного из экранов, связанных с этой клавиатурой.

Допустимыми командами command являются:

test - определяет, поддерживает ли клавиатура режим AT. at - устанавливает клавиатуру в режим AT. xt - устанавливает клавиатуру в режим XT.

ПРИМЕЧАНИЯ

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

СМ. ТАКЖЕ

keyboard(HW)



KCLT_CREATE


НАЗВАНИЕ

kclt_create Создать клиентские выходы для ядра

СИНТАКСИС

#include <sys/types.h>

kclt_create(nfd, fds, trans, tsdu, pgm, vers) int nfd; int *fds; int trans; int tsdu; ulong pgm; ulong vers;

ОПИСАНИЕ

Функция kclt_create используется при создании клиентских выходов для ядра RPC. В настоящее время различают два типа клиентов ядра RPC: NFS и администратор защиты.

Nfd - число файловых дескрипторов в массиве fds. Nfd контролирует число клиентских выходов, создаваемых с использованием данных файловых дескрипторов и остальных аргументов. Trans используется в качестве "транспортного идентификатора". Он отражает различия в транспортных и протокольных версиях, параллельно работающих на host-машине. Значения для trans еще не были определены, поэтому в trans следует занести 1. Tsdu - максимальная единица передачи данных по транспортному протоколу. Pgm и vers используются при инициализации новых клиентских выходов. Они являются частью заголовка RPC-вызова. Кроме того, аргументы trans, pgm и vers используются для внутренней идентификации клиентских выходов.

СМ. ТАКЖЕ



KEYBOARD(HW)


НАЗВАНИЕ

keyboard - клавиатура персонального компьютера.

ОПИСАНИЕ

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

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

Вводится символ ASCII. Компьютеру посылается символьная строка. Запускается какая-либо функция. Меняется значение другой клавиши или клавиш.

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

Различают три особенных события при нажатии клавиш:

Переключение экранов. Генерация сигнала. Изменение значения предыдущего символа, символов или строки.

Переключение экранов (многоэкранный режим)

Для переключения на следующий экран нажмите Ctrl-PrtSc, используя клавиши Ctrl и PrtSc. Любой активный экран может быть выбран нажатием alt-Fn, где Fn - одна из функциональных клавиш. F1 относится к дисплею компьютера (/dev/tty01).

Сигналы

Сигналы оказывают воздействие на процесс или несколько процессов. Примерами сигналов являются Ctrl-d (конец ввода и выход из оболочки), Ctrl-\ (завершение процесса), Ctrl-s ( остановка выдачи еа экран) и Ctrl-q (возобновление выдачи).

Обычно символы ставятся в соответствие сигналам с помощью stty(1). Единственный способ поставить сигнал в соответствие символам через посредство stty.

Изменение значения нажатий клавиш

Действительный код, посылаемый драйверу клавиатуры, может быть изменен с помощью комбинации некоторых клавиш. Например, клавиша SHIFT меняет значение символов ASCII буквенно-цифровых клавиш. Удерживание клавиши Ctrl при нажатии других клавиш генерирует управляющие коды (Ctrl-d, Ctrl-s, Ctrl-q и др.).

Специальные клавиши


Для облегчения отыскания специальных клавиш в следующей таблице показано соответствие клавиш типичной консоли ключам системы UNIX. В этой таблице черточка (-) между названиями клавиш означает "удерживайте первую клавишу, нажимая на вторую".
Название в системе XENIXМетки на клавиатуреДействие INTRDelОстанавливает текущее действие и возвращает в оболочку. Эта клавиша называется также RUB OUT или INTERRUPT. BACKSPACE<-Удаляет первый символ слева от курсора. Заметьте, что клавиша "движения курсора влево" также имеет метку "стрелка влево", но она не удаляет символы. Ctrl-dCtrl-dСигнализирует о конце ввода с клавиатуры; кроме того осуществляет выход из текущей оболочки. Ctrl-hCtrl-hУдаляет первый символ слева от курсора. Называется также ERASE. Ctrl-qCtrl-qВозобновляет выдачу после ее остановки с помощью нажатия Ctrl-s. Ctrl-sCtrl-sОстанавливает выдачу на экран (работа программы не прекращается). Ctrl-uCtrl-uУдаляет все символы на текущей строке. Называется также KILL. Ctrl-\Ctrl-\Прекращает выполнение текущей команды и создает core-файл, если это разрешено. (Рекомендуется только для отладки.) ESCAPEEscСпециальный код для некоторых программ. В текстовом редакторе vi(C) переключает режим вставки в командный режим. RETURN(down-left arrow or ENTER)Завершает введение командной строки и ининциирует действие оболочки. FnFnФункциональная клавиша n. F1-F12 используются без нажатия SHIFT. F13-F24 генерируются с помощью SHIFT. F25-F36 генерируются с помощью Ctrl-F1 через F12, F37-F48 генерируются с помощью Ctrl-Shift-F1 через F12. Следующие клавиши Fn (F49-F60) находятся на дополнительной цифровой панели (Shift не используется): F49 - '7'

F55 - '6'

F50 - '8'

F55 - '+'

F51 - '9'

F55 - '1'

F52 - '-'

F55 - '2'

F53 - '4'

F55 - '3'

F54 - '5'

F55 - '0'

Соответствия клавишам F61-F96 смотрите в файле /usr/lib/keyboard/strings. Эти функциональные ключи доступны не на всех клавиатурах, но вы можете поставить им в соответствие другие клавиши.



Назначение клавиш клавиатуры формируется с помощью структуры, определенной в файле /usr/include/sys/keyboard.h. Каждая клавиша может иметь десять состояний. Первые восемь таковы:

Base Shift Ctrl Alt Ctrl-Shift Alt-Shift Alt-Ctrl Alt-Ctrl-Shift

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

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

Режимы клавиатуры

Большинство клавиатур обычно находятся в режиме XT, но некоторые из них могут быть установлены в режим AT. Для определения того, поддерживает ли клавиатура режим AT, имеется утилита kbmode(8), которая может быть также использована для переключения клавиатуры в режим AT после очередной перезагрузки системы. Можно установить системную конфигурацию клавиатуры на режим AT с помощью утилиты configure(8).

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

Скан-коды

В следующей таблице описывается содержимое файла /usr/lib/keyboard/keys, устанавливаемое по умолчанию. Она содержит следующие заголовки колонок:

SCAN CODE - скан-код, генерируемый аппаратной частью клавиатуры при нажатии клавиши. Пользователь не имеет доступа к скан-коду, генерируемому на отжатие клавиши.

BASE - нормальное значение, генерируемое при нажатие клавиши.

SHIFT - значение, генерируемое при нажатии клавиши при нажатой клавише SHIFT.

LOCK - указывает, как служебные клавиши фиксации регистра воздействуют на эту клавишу:

C указывает на воздействие со стороны Capslock N указывает на воздействие со стороны Numlock B указывает на воздействие со стороны Numlock и Capslock вместе O указывает на отсутствие этого воздействия

Клавиши типа C, N и B генерируют смещенное значение скан-кода в состоянии, когда эти служебные клавиши включены. Если при этом будет нажата клавиша Shift, то значение скан-кода будет переключено обратно.



Прочие колонки таблицы представляют значения, генерируемые при нажатии данной клавиши в комбинации с удерживаемыми клавишами CTRL, ALT и SHIFT.

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

SCAN CODEBASESHIFTCTRLCTRL SHIFTALTALT SHIFTALT CTRLALT CTRL SHIFTLOCK

0nopnopnopnopnopnopnopnopO 1escescnopnopescescnopnopO 2'1''!'nopnop'1''!'nopnopO 3'2''@'nopnop'2''@'nopnopO 4'3''#'nopnop'3''#'nopnopO 5'4''$'nopnop'4''#'nopnopO 6'5''%'nopnop'5''%'nopnopO 7'6''^'rsrs'6''^'rsrsO 8'7''&'nopnop'7''&'nopnopO 9'8''*'nopnop'8''*'nopnopO 10'9''('nopnop'9''('nopnopO 11'0'')'nopnop'0'')'nopnopO 12'-''_'nsns'-''_'nsnsO 13'=''+'nopnop'=''+'nopnopO 14bsbsdeldelbsbsdeldelO 15htbtabnopnophtbtabnopnopO 16'q''Q'dc1dc1'q''Q'dc1dc1C 17'w''W'etbetb'w''W'etbetbC 18'e''E'enqenq'e''E'enqenqC 19'r''R'dc2dc2'r''R'dc2dc2C 20't''T'dc4dc4't''T'dc4dc4C 21'y''Y'emem'y''Y'ememC 22'u''U'naknak'u''U'naknakC 23'i''I'htht'i''I'hthtC 24'o''O'sisi'o''O'sisiC 25'p''P'dledle'p''P'dledleC 26'[''{'escesc'[''{'escescO 27']''}'gsgs']''}'gsgsO 28crcrnlnlcrcrnlnlO 29ctrlctrlctrlctrlctrlctrlctrlctrlO 30'a''A'sohsoh'a''A'sohsohC 31's''S'dc3dc3's''S'dc3dc3C 32'd''D'eoteot'd''D'eoteotC 33'f''F'ackack'f''F'ackackC 34'g''G'belbel'g''G'belbelC 35'h''H'bsbs'h''H'bsbsC 36'j''J'nlnl'j''J'nlnlC 37'k''K'vtvt'k''K'vtvtC 38'l''L'npnp'l''L'npnpC 39';'':'nopnop';'':'nopnopO 40'\''"'nopnop'\''"'nopnopO 41'`''~'nopnop'`''~'nopnopO 42lshiftlshiftlshiftlshiftlshiftlshiftlshiftlshiftO 43'\\''|'fsfs'\\''|'fsfsO 44'z''Z'subsub'z''Z'subsubO 45'x''X'cancan'x''X'cancanC 46'c''C'etxetx'c''C'etxetxC 47'v''V'synsyn'v''V'sinsinC 48'b''B'stxstx'b''B'stxstxC 49'n''N'soso'n''N'sosoC 50'm''M'crcr'm''M'crcrC 51',''<'nopnop',''<'nopnopO 52'.''>'nopnop',''>'nopnopO 53'/''?'nopnop'/''?'nopnopO 54rshiftrshiftrshiftrshiftrshiftrshiftrshiftrshiftO 55'*''*'nscrnscr'*''*'nscrnscrO 56altaltaltaltaltaltaltaltO 57' '' '' '' '' '' '' '' 'O 58clockclockclockclockclockclockclockclockO 59fkey1fkey13fkey25fkey37scr1scr11scr1scr11O 60fkey2fkey14fkey26fkey38scr2scr12scr2scr12O 61fkey3fkey15fkey27fkey39scr3scr13scr3scr13O 62fkey4fkey16fkey28fkey40scr4scr14scr4scr14O 63fkey5fkey17fkey29fkey41scr5scr15scr5scr15O 64fkey6fkey18fkey30fkey42scr6scr16scr6scr16O 65fkey7fkey19fkey31fkey43scr7scr7scr7scr7O 66fkey8fkey20fkey32fkey44scr8scr8scr8scr8O 67fkey9fkey21fkey33fkey45scr9scr9scr9scr9O 68fkey10fkey22fkey34fkey46scr10scr10scr10scr10O 69nlocknlockdc3dc3nlocknlockdc3dc3O 70slockslockdeldelslockslockdeldelO 71fkey49'7''7''7''7''7''7''7'N 72fkey50'8''8''8''8''8''8''8'N 73fkey51'9''9''9''9''9''9''9'N 74fkey52'-''-''-''-''-''-''-'N 75fkey53'4''4''4''4''4''4''4'N 76fkey54'5''5''5''5''5''5''5'N 77fkey55'6''6''6''6''6''6''6'N 78fkey56'+''+''+''+''+''+''+'N 79fkey57'1''1''1''1''1''1''1'N 80fkey58'2''2''2''2''2''2''2'N 81fkey59'3''3''3''3''3''3''3'N 82fkey60'0''0''0''0''0''0''0'N 83del'.'deldeldeldeldeldelN 84nopnopnopnopnopnopnopnopO 85fkey11fkey23fkey35fkey47scr11scr11scr11scr11O 86fkey12fkey24fkey36fkey48scr12scr12scr12scr12O <



/p>

Следующие скан- коды генерируются только на клавиатурах, которые поддерживают и находятся в режиме AT.

SCAN CODEBASESHIFTCTRLCTRL SHIFTALTALT SHIFTALT CTRLALT CTRL SHIFTLOCK

87fkey11fkey23fkey35fkey47scr11scr11scr11scr11O 88fkey12fkey24fkey36fkey48scr12scr12scr12scr12O 89nopnopnopnopnopnopnopnopO 90nopnopnopnopnopnopnopnopO 91nopnopnopnopnopnopnopnopO 92nopnopnopnopnopnopnopnopO 93nopnopnopnopnopnopnopnopO 94nopnopnopnopnopnopnopnopO 95nopnopnopnopnopnopnopnopO 96fkey50fkey50fkey50fkey50fkey50fkey50fkey50fkey50O 97fkey53fkey53fkey53fkey53fkey53fkey53fkey53fkey53O 98fkey58fkey58fkey58fkey58fkey58fkey58fkey58fkey58O 99fkey55fkey55fkey55fkey55fkey55fkey55fkey55fkey55O 100fkey49fkey49fkey49fkey49fkey49fkey49fkey49fkey49O 101fkey51fkey51fkey51fkey51fkey51fkey51fkey51fkey51O 102fkey57fkey57fkey57fkey57fkey57fkey57fkey57fkey57O 103fkey59fkey59fkey59fkey59fkey59fkey59fkey59fkey59O 104fkey60fkey60fkey60fkey60fkey60fkey60fkey60fkey60O 105deldeldeldeldeldeldeldel0 106nopnopnopnopnopnopnopnopO 107nopnopnopnopnopnopnopnopO 108nopnopnopnopnopnopnopnopO 109nopnopnopnopnopnopnopnopO 110nopnopnopnopnopnopnopnopO 111nopnopnopnopnopnopnopnopO 112nopnopnopnopnopnopnopnopO 113nopnopnopnopnopnopnopnopO 114nopnopnopnopnopnopnopnopO 115nopnopnopnopnopnopnopnopO 116nopnopnopnopnopnopnopnopO 117nopnopnopnopnopnopnopnopO 118nopnopnopnopnopnopnopnopO 119nopnopnopnopnopnopnopnopO 120nopnopnopnopnopnopnopnopO 121nopnopnopnopnopnopnopnopO 122nopnopnopnopnopnopnopnopO 123nopnopnopnopnopnopnopnopO 124nopnopnopnopnopnopnopnopO 125nopnopnopnopnopnopnopnopO 126nopnopnopnopnopnopnopnopO 127nopnopnopnopnopnopnopnopO 128rctrlrctrlrctrlrctrlrctrlrctrlrctrlrctrlO 129raltraltraltraltraltraltraltraltO 130fkey60fkey60fkey60fkey60fkey60fkey60fkey60fkey60O 131deldeldeldeldeldeldeldel0 132fkey49fkey49fkey49fkey49fkey49fkey49fkey49fkey49O 133fkey57fkey57fkey57fkey57fkey57fkey57fkey57fkey57O 134fkey51fkey51fkey51fkey51fkey51fkey51fkey51fkey51O 135fkey59fkey59fkey59fkey59fkey59fkey59fkey59fkey59O 136fkey53fkey53fkey53fkey53fkey53fkey53fkey53fkey53O 137fkey55fkey55fkey55fkey55fkey55fkey55fkey55fkey55O 138fkey50fkey50fkey50fkey50fkey50fkey50fkey50fkey50O 139fkey58fkey58fkey58fkey58fkey58fkey58fkey58fkey58O 140'/'nopnopnop'/'nopnopnopO 141crcrnlnlcrcrnlnlO <



/p>

В следующей таблице перечисляются "значения" специальных ключевых слов в файле /usr/lib/keyboard/keys (и в предыдущей таблице). mapkey(ADM) помещает "значение" ключевого слова в буфер управления вводом/ выводом во время назначения клавиш. Эти ключевые слова используются только в файле скан-кодов /usr/lib/keyboard/keys для упрощения его чтения.

НазваниеЗначениеОписание nop0Действия нет - "пустое" нажатие клавиши lshift2Левая клавиша shift rshift3Правая клавиша shift clock4фиксация Capslock nclock5фиксация Numlock slock6фиксация Scroll lock alt7Клавиша Alt btab8Ключ обратной табуляции - генерирует фиксированную последовательность (esc [ Z) ctrl9Клавиша Ctrl nscr10Переключение на следующий экран scr111Переключение на экран #1 ... scr1626Переключение на экран #16 fkey127Функциональная клавиша #1 ... fkey96122Функциональная клавиша #96 rctl128*Правая клавиша Ctrl ralt129*Правая клавиша Alt * Только в режиме AT В следующей таблице перечисляются названия ключевых слов и их десятичные значения, которые могут взаимозаменяться в файле mapkey. Эти названия используются вместо соответствующих численных констант для облегчения чтения таблицы скан-кодов. Но в буфер управления вводом/выводом помещаются только десятичные значения. Они берутся из ascci(5).

НазваниеЗначениеНазваниеЗначение nul0dc117 soh1dc218 stx2dc319 etx3dc420 eot4nak21 enq5syn22 ack6etb23 bel7can24 bs8em25 ht9sub26 nl10esc27 vt11fs28 np12gs29 cr13rs30 so14ns31 si15del127 dle16   Назначение клавиш клавиатуры

Установление соответствия клавиш клавиатуры является составной частью эмуляции терминала. Эта процедура выполняется только для клавиатуры компьютера, но не для удаленных терминалов. Для изменения таблицы соответствий клавиш используйте утилиту mapkey. Чтобы изменить эту таблицу для отдельных каналов (экранов в многоэкранном режиме) используйте программу mapchan(5).



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

При установке соответствий клавиш клавиатуры значение cmd=GIO_KEYMAP высвечивает текущую таблицу соответствий, а cmd=PIO_KEYMAP помещает готовый буфер на место.

Назначение функциональных клавиш

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

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

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

Далее приведен список значений функциональных клавиш, устанавливаемых по умолчанию:

Значения функциональных клавиш по умолчанию Клавиша #ФункцияShift
ФункцияCtrl
ФункцияCtrl
Shift
Функция 1ESC[MESC[YESC[kESC[w 2ESC[NESC[ZESC[lESC[x 3ESC[OESC[aESC[mESC[y 4ESC[PESC[bESC[nESC[z 5ESC[QESC[cESC[oESC[@ 6ESC[RESC[dESC[pESC[[ 7ESC[SESC[eESC[qESC[\ 8ESC[TESC[fESC[rESC[] 9ESC[UESC[gESC[sESC[^ 10ESC[VESC[hESC[tESC[_ 11ESC[WESC[iESC[uESC[' 12ESC[XESC[jESC[vESC[{
HomeESC[HEndESC[F Up arrowESC[ADown arrowESC[B Page upESC[IPage downESC[G Left arrowESC[D5ESC[E Right arrowESC[CInsertESC[L Вы можете назначать функциональные клавиши с помощью ioctl(2). Синтаксис имеет вид:

#include <sys/keyboard.h> ioctl(fd,cmd,buf) int fd,cmd; char *buf; ...

При установке соответствий клавиш клавиатуры значение cmd=GIO_KEYMAP высвечивает текущую таблицу соответствий, а cmd=PIO_KEYMAP устанавливает новую таблицу на место.

ФАЙЛЫ

/usr/lib/keyboard/keys /usr/lib/keyboard/strings

СМ. ТАКЖЕ

mapchan(3), mapchan(5), mapkey(8), multiscreen(5), screen(HW), setkey(1), stty(1), kbmode(8), configure(8)

KILL(1)


НАЗВАНИЕ

kill - терминирование процессов

СИНТАКСИС

kill [-номер_сигнала] идентификатор_процесса ...

ОПИСАНИЕ

По умолчанию команда kill посылает сигнал 15 (завершиться) процессу с указанным идентификатором. Таким способом обычно терминируют процесс, который не устанавливает нестандартную реакцию на сигналы. Идентификаторы_процессов можно узнать по команде (в колонке PID). Идентификатор асинхронно запущенного процесса сообщается shell'ом в момент запуска (в случае конвейера сообщается только идентификатор последнего процесса).

Подробно о терминировании процесов см. . Например, если указан процесс с номером 0, то сигнал будет послан всем процессам данной группы.

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

Если в качестве первого аргумента указан (с предшествующим знаком -) номер_сигнала, то вместо сигнала 15 посылается он [см. ]. Так, команда kill -9 ... уничтожает процесс наверняка, если, конечно, для уничтожения хватает прав.

СМ. ТАКЖЕ

, .

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



KILLALL(1M)


НАЗВАНИЕ

killall - уничтожение всех активных процессов

СИНТАКСИС

/etc/killall [сигнал]

ОПИСАНИЕ

Утилита /etc/shutdown использует команду killall для уничтожения всех активных процессов, не связанных непосредственно с процедурой завершения работы в системе.

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

Команда killall посылает процессам заданный сигнал [см. ]. Подразумеваемое значение сигнала равно 9 сигналу уничтожения.

ФАЙЛЫ

/etc/shutdown

СМ. ТАКЖЕ

, .

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

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

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

Команду killall может выполнять только суперпользователь