НАЗВАНИЕ
env - формирование окружения для выполнения команды
СИНТАКСИС
env [-] [имя=значение ...] [команда аргумент ...]
ОПИСАНИЕ
Утилита env получает текущее окружение, модифицирует его в соответствии со своими аргументами, и затем выполняет команду в модифицированном окружении. Пары имя=значение об единяются с наследуемым окружением перед выполнением команды. При наличии флага "-" наследуемое окружение полностью игнорируется, и команда выполняется с тем окружением, которое определено командной строкой env.
Если команда не задана, то сформированное окружение выдается на стандартный вывод, по одной паре имя=зачение в строке.
СМ. ТАКЖЕ
.
, , в Справочнике программиста.
НАЗВАНИЕ
exp, log, log10, pow, sqrt - показательная, логарифмическая, степенная функции и функция извлечения квадратного корня
СИНТАКСИС
#include <math.h>
double exp (x) double x;
double log (x) double x;
double log10 (x) double x;
double pow (x, y) double x, y;
double sqrt (x) double x;
ОПИСАНИЕ
Функция exp возвращает e^x.
Функция log возвращает натуральный логарифм аргумента x. Значение x должно быть положительным.
Функция log10 возвращает логарифм по основанию 10 аргумента x. Значение x должно быть положительным.
Функция pow возвращает x^y. Если значение x равно 0, то значение y должно быть положительным. Если значение x отрицательно, то значение y должно быть целым.
Функция sqrt возвращает неотрицательное значение квадратного корня из x. Значение x не может быть отрицательным.
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
Функция exp возвращает значение HUGE [см. ], если представление результирующего значения приводит к переполнению, и 0 - если к исчезновению порядка. В обоих случаях переменной errno присваивается значение ERANGE.
При неположительных аргументах функции log и log10 возвращают значение -HUGE и переменной errno присваивается значение EDOM. Кроме того, в стандартный протокол выдается сообщение о выходе за границы области определения или, при x=0, о попадании в точку сингулярности.
Функция pow возвращает нулевое значение, а переменной errno присваивается значение EDOM в случаях:
Если x=0 и значение y неположительно. Если значение x отрицательно и y не является целым.
В обоих случаях в стандартный протокол будет выдано сообщение о выходе за границы области определения. Если представление результирующего значения функции pow приводит к переполнению или к исчезновению порядка, то pow возвращает соответственно +HUGE, -HUGE или 0. Переменной errno присваивается значение ERANGE.
Функция sqrt возвращает нулевое значение, а переменной errno присваивается значение EDOM в случае, если x отрицательно. В стандартный протокол будет выдано сообщение о выходе за границы области определения.
Изложенная процедура обработки ошибок может быть изменена посредством функции .
НАЗВАНИЕ
getutent, getutid, getutline, pututline, setutent, endutent, utmpname - доступ к utmp-файлу
СИНТАКСИС
#include <sys/types.h>
#include <utmp.h>
struct utmp *getutent ( )
struct utmp *getutid (id) struct utmp *id;
struct utmp *getutline (line) struct utmp *line;
void pututline (utmp) struct utmp *utmp;
void setutent ( )
void endutent ( )
void utmpname (file) char *file;
ОПИСАНИЕ
Результатом функций getutent, getutid и getutline является указатель на структуру следующего типа:
struct utmp { char ut_user[8]; /* Входное имя пользователя */ char ut_id[4]; /* Идентификатор из файла /etc/inittab (обычно номер линии) */ char ut_line[12]; /* Имя устройства (console, tty xx) */ short ut_pid; /* Идентификатор процесса */ short ut_type; /* Тип элемента */ struct exit_status { short e_termination; /* Системный код завершения процесса */ short e_exit; /* Пользовательский код завер- шения */ } ut_exit; /* Код завершения процесса, поме- ченного как DEAD_PROCESS */ time_t ut_time; /* Время создания элемента */ };
Функция getutent читает следующий элемент из файла типа utmp. Если файл еще не открыт, он открывается. При достижении конца файла выполнение функции завершается неудачей.
Функция getutid, начиная с текущей позиции, разыскивает элемент utmp-файла, в котором поле ut_type соответствует значению id->ut_type. Если компонент id->ut_type равен RUN_LVL, BOOT_TIME, OLD_TIME, или NEW_TIME, то требуется точное равенство типов. Если же компонент id->ut_type равен INIT_PROCESS, LOGIN_PROCESS, USER_PROCESS, или DEAD_PROCESS, то функция getutid вернет указатель на первый элемент, тип которого равен одному из четырех перечисленных, и поле ut_id соответствует значению id->ut_id. Функция getutid завершается неудачей, если ничего не находит до конца файла.
Функция getutline, начиная с текущей позиции, разыскивает элемент utmp-файла, тип которого равен LOGIN_PROCESS или USER_PROCESS, а поле ut_line соответствует значению line->ut_line. Функция getutline завершается неудачей, если ничего не находит до конца файла.
Функция pututline записывает указанную utmp-структуру в utmp-файл. При этом для поиска нужного места используется функция getutid, если обнаруживается, что текущая позиция не является подходящей. Предполагается, что пользователь, перед тем как обратиться к pututline, установил нужную текущую позицию с помощью одной из функций getut. Если это сделано, pututline не будет производить поиск. Если pututline не обнаружит подходящего места для нового элемента, элемент будет добавлен в конец файла.
Функция setutent устанавливает указатель текущей позиции на начало файла. Это должно быть сделано перед поиском нового элемента, если предполагается, что поиск должен проводиться во всем файле.
Функция endutent закрывает открытый файл.
Функция utmpname позволяет изменить имя обрабатываемого файла с /etc/utmp на любое другое. Предполагается, что чаще всего этим другим именем будет /etc/wtmp. Если файл не существует, он не будет создаваться до первого обращения к нему. Функция utmpname не отрывает файл, она только закрывает открытый файл и запоминает имя нового файла.
ФАЙЛЫ
/etc/utmp /etc/wtmp
СМ. ТАКЖЕ
, .
ДИАГНОСТИКА
При ошибке ввода/вывода возвращается пустой указатель (NULL). Ошибка чтения может быть вызвана отсутствием прав доступа или достижением конца файла.
ПРИМЕЧАНИЯ
Элемент, к которому было последнее обращение, сохраняется в статической структуре, поэтому доступ к нескольким элементам требует копирования структур. При каждом обращении к getutid или getutline вначале анализируется статическая структура. Если она оказывается подходящей, никакого поиска не производится. Чтобы использовать getutline для поиска нескольких вхождений, необходимо очищать статическую структуру после успешного поиска, иначе getutline будет возвращать все время одно и то же. Из правила очистки структуры перед последующим чтением есть одно исключение. Если неявное чтение при pututline обнаруживает, что оно находится на нужном месте в файле, то содержимое статической структуры, возвращаемой getutent, getutid или getutline, не нужно очищать, если пользователь только поменял ее содержимое и передал указатель функции pututline.
Все функции пользуются стандартным буферизованным вводом/выводом, однако pututline использует нестандартный небуферизованный вывод, чтобы разрешить нескольким процессам модифицировать файлы utmp и wtmp.
НАЗВАНИЕ
pack - упаковка файлов
СИНТАКСИС
pack [-] [-f] файл ...
ОПИСАНИЕ
Команда pack предпринимает попытку сохранить указанные файлы в сжатой форме, то есть упаковать информацию. Когда только возможно (и имеет смысл), каждый входной файл заменяется упакованным вариантом с именем файл.z, который имеет тот же режим доступа, те же даты доступа и модификации, того же владельца. Опция -f вызывает принудительную упаковку файла. Она используется для того, чтобы упаковать весь каталог, даже если для некоторых файлов это невыгодно. Если команда выполняется успешно, то исходный файл удаляется. Упакованные файлы могут быть преобразованы в свою первоначальную форму с помощью команд или .
Командой pack используется метод кодирования Хаффмана (с минимальной избыточностью) на побайтной основе. Если используется опция -, то устанавливается внутренний флаг, определяющий выдачу на стандартный вывод количества использований каждого байта, относительную частоту использования и код для байта. Дополнительное задание опции - на месте аргумента файл устанавливает и сбрасывает этот внутренний флаг.
Итоговая степень сжатия зависит от размера исходного файла и от распределения частоты символов. Так как дерево декодировки занимает начало каждого упакованного .z-файла, то обычно не стоит упаковывать файлы, размер которых менее трех блоков, если только распределение частоты символов не является очень неравномерным, что может иметь место в случае чертежа или картинки.
Обычно текстовые файлы уменьшаются до 60-75% от своего первоначального размера. Загрузочные модули, в которых используется более широкое множество символов и в которых распределение символов более равномерно, подвергаются меньшему сжатию; размер упакованной версии файла составляет примерно 90% от первоначального.
Команда pack возвращает значение, равное числу файлов, которые не удалось упаковать.
В следующих случаях упаковки файла не происходит:
Файл уже упакован. Имя файла состоит более чем из 12 символов. На файл есть ссылки. Файл является каталогом. Файл не может быть открыт. Упаковка не сэкономит дисковое пространство. Файл с именем файл.z уже существует. .z-файл не может быть создан. Ошибка ввода/вывода по время выполнения упаковки.
Простое имя файла не должно состоять более чем из 12 символов, чтобы можно было добавить расширение .z. Каталоги упаковывать нельзя.
СМ. ТАКЖЕ
, , .
ИМЯ
pagesize - Показывает размер системной страницы.
СИНТАКСИС
pagesize
ОПИСАНИЕ
Pagesize печатает размер страницы памяти в байтах, возвращаемый getpagesize(3). Эту программу удобно использовать в скриптах, написанных на shell.
СМ. ТАКЖЕ
getpagesize(3)
ИСТОРИЯ
Команда pagesize появилась в 4.2BSD.
НАЗВАНИЕ
parallel - параллельные интерфейсные устройства.
ОПИСАНИЕ
Существует несколько подобных параллельных устройств:
/dev/lp0 Главный параллельный адаптер. /dev/lp1 Адаптер платы монохромного дисплея. /dev/lp2 Альтернативный параллельный адаптер (на подходящих машинах).
Невозможно иметь на одной системе все три параллельных устройства. Компьютеры XT позволяют использовать только /dev/lp0. Некоторые компьютеры класса AT позволяют использовать два параллельных устройства, /dev/lp2 и любое из /dev/lp0 и /dev/lp1. Впрочем, на разных машинах доступные устройства бывают разными и могут быть, например, /dev/lp0 и любое из /dev/lp1 и /dev/lp2.
Если параллельное устройство не генерирует прерывания должным образом, тогда параллельный драйвер устанавливает "режим опроса". Если эти прерывания идут от устройства нормально, то драйвер переключается в исходный режим.
Когда параллельное устройство закрывается, драйвер этого устройства делает задержку на некоторое время. Эта задержка может воздействовать на функционирование принтера, но является необходимой для компенсации различных размеров буферов и скоростей печати. Например, следующая команда устанавливает время этой задержки порядка 1 секунды, выраженное в десятых долях секунды:
stty time 10< /dev/lp0
Если эту команду ввести с подсказки, то она сработает только в том случае, если порт открыт. Рекомендуется помещать подобную команду в интерфейсную программу, используемой параллельным устройством, для достижения того же эффекта:
stty time 10 0< &1
ПРИМЕЧАНИЯ
Параллельные адаптеры могут функционировать с дополнительных плат, но переключатели при этом должны быть установлены правильно. На некоторых совместимых компьютерах порты lp0 и lp1 переставлены.
Команда stty(1) обработки выдачи предусматривает выдачу данных на параллельное устройство. Опции stty, не имеющие воздействия на параллельное устройство, игнорируются, и сообщения об ошибках не выдаются.
ПРИМЕНЕНИЕ
Обычно вызывается через lp(1), но запись можно вести и напрямую.
ФАЙЛЫ
/dev/lp0 /dev/lp1 /dev/lp2
СМ. ТАКЖЕ
lp(1), lp(HW), lpadmin(8), lpinit(8), lpsched(8), serial(HW)
НАЗВАНИЕ
passmgmt - работа с файлами паролей
СИНТАКСИС
passmgmt -a опции имя passmgmt -m опции имя passmgmt -d имя
ОПИСАНИЕ
Команда passmgmt корректирует содержимое файлов паролей. Она имеет дело с файлами /etc/passwd и /etc/shadow. Если файл shadow отсутствует, изменения записываются только в файл /etc/passwd.
Команда с параметром -a добавляет в файлы, содержащие пароли регистрации, запись о пользователе с указанным именем. При этом для нового пользователя не создается никакого каталога и вход в систему остается заблокированным (поле passwd содержит значение "LK") до тех пор, пока для установки пароля не будет исполнена команда .
Команда с параметром -m модифицирует в файлах, содержащих пароли регистрации, запись о пользователе с указанным именем. При этом могут корректироваться поля: имени в записи файла /etc/shadow и все поля (за исключением пароля) в записи файла /etc/passwd. Исправлены будут значения только тех полей, которые указаны в командной строке. Если файл /etc/shadow отсутствует, все исправления делаются в файле /etc/passwd.
Команда с параметром -d удаляет из файлов запись о пользователе с указанным именем. При этом никакие файлы из принадлежащих пользователю удалены не будут; их нужно удалять вручную.
Имя пользователя должно быть уникальным.
Опции команды:
<
НАЗВАНИЕ
passwd,yppasswd - смена входного пароля
СИНТАКСИС
passwd [входное_имя]
ОПИСАНИЕ
Команда passwd меняет (или устанавливает) пароль, связанный с входным_именем пользователя.
Обычный пользователь может менять только пароль, связанный с его собственным входным_именем.
Команда запрашивает у обычных пользователей старый пароль (если он был), а затем дважды запрашивает новый. После первого запроса проверяется, достаточен ли "возраст" старого пароля. Возраст - это промежуток времени (обычно несколько дней), который должен пройти между сменами пароля. Если возраст недостаточен, новый пароль отвергается и passwd завершается; см. .
Если возраст достаточен, делается проверка на соответствие нового пароля техническим требованиям. Когда новый пароль вводится во второй раз, две копии нового пароля сравниваются. Если они не совпали, цикл запроса нового пароля повторяется, но не более двух раз.
Технические требования к паролям:
Каждый пароль должен содержать не менее 6 симво лов. Значащими являются только первые 8. Каждый пароль должен содержать как минимум две буквы (большие или малые) и хотя бы одну цифру или знак. Каждый пароль должен отличаться от входного_имени, прочитанного слева направо или задом наперед, и от его циклических сдвигов. При сравнении не делается различий между большими и малыми буквами. Новый пароль должен отличаться от старого хотя бы тремя символами. При сравнении не делается разли чий между большими и малыми буквами.
Пользователь, у которого действующий идентификатор есть ноль, называется суперпользователем [см. и ]. Суперпользователь имеет право изменять любые пароли, поэтому у него старый пароль не запрашивается. Суперпользователь не связан ограничениями на возраст пароля и соответствие техническим требованиям. Суперпользователь может создать пустой пароль, нажимая возврат каретки в ответ на запрос нового пароля.
ФАЙЛЫ
/etc/passwd
СМ. ТАКЖЕ
, , .
, в Справочнике программиста.
СЮРПРИЗЫ
Пустой пароль не равнозначен отсутствию пароля и запрашивается каждый раз при входе.
НАЗВАНИЕ
passwd - фaйл пapoлeй
ОПИСАНИЕ
Фaйл passwd cocтoит из cтpoк, кaждaя из кoтopыx нeceт инфopмaцию o кoнкpeтнoм пoльзoвaтeлe и coдepжит cлeдyющиe пoля:
вxoднoe имя; зaшифpoвaнный пapoль; чиcлoвoй идeнтификaтop пoльзoввaтeля; чиcлoвoй идeнтификaтop гpyппы; кoммeнтapии; инициaлизиpyeмый paбoчий кaтaлoг; пpoгpaммa, иcпoльзyeмaя для oбpaбoтки кoмaнднoгo языкa (типa shell).
Фopмaт пoля кoммeнтapиeв пpивeдeн в oпиcaнии . Ecли пoлe пapoля пycтo, знaчит пapoля нe cyщecтвyeт. Ecли пycтo пoлe shell, иcпoльзyeтcя .
Фaйл coдepжитcя в кaтaлoгe /etc. T.к. пapoль зaшифpoвaн, фaйл дocтyпeн в ocнoвнoм для чтeния.
Пapoль cocтoит из 13 cимвoлoв (любыx из: ., /, 0-9, A-Z, az). Cpoк дeйcтвия (вoзpacт) пapoля ycтaнaвливaeтcя для oтдeльнoгo пoльзoвaтeля, ecли eгo зaшифpoвaнный пapoль cлeдyeт зa зaпятoй и нeнyлeвoй cтpoкoй cимвoлoв c кoдaми вышe aлфaвитныx. (Taкaя cтpoкa дoлжнa ввoдитьcя пpивилeгиpoвaнным пoльзoвaтeлeм). Пepвый cимвoл cтpoки вoзpacтa - мaкcимaльнoe чиcлo нeдeль, кoгдa пapoль дeйcтвитeлeн. Пocлe иcтeчeния cpoкa дeйcтвия, нeoбxoдимo ycтaнoвить нoвый пapoль. Bтopoй cимвoл cтpoки вoзpacтa минимaльнoe чиcлo нeдeль, кoтopoe дoлжнo пpoйти пpeждe, чeм пapoль мoжeт быть измeнeн. Ocтaльныe cимвoлы oпpeдeляют тy нeдeлю (cчитaя c 1970г.), кoгдa пapoль был измeнeн пocлeдний paз. Пepвый и втopoй cимвoлы дoлжны имeть чиcлoвoe знaчeниe в диaпaзoнe 0-63 (тoчкa `.' эквивaлeнтнa 0 и z эквивaлeнтнo 63). Ecли чиcлoвoe знaчeниe oбoиx cимвoлoв - 0, пoльзoвaтeль мoжeт измeнить cвoй пapoль в любoй мoмeнт. Ecли втopoe знaчeниe бoльшe пepвoгo, тoлькo пpивилeгиpoвaнный пoльзoвaтeль мoжeт измeнять пapoль.
ФАЙЛЫ
/etc/passwd
СМ. ТАКЖЕ
, , a64l(2), getpwent(2),group(5),pwadmin(8)
НАЗВАНИЕ
paste - слияние строк одного или нескольких файлов
СИНТАКСИС
paste файл1 файл2 ... paste -dсписок файл1 файл2 ... paste -s [-dсписок] файл1 ...
ОПИСАНИЕ
В первых двух своих формах команда paste конкатенирует соответственные строки указанных входных файлов файл1, файл2 и т.д. Каждый файл рассматривается как отдельный столбец или несколько столбцов некоторой таблицы; команда paste склеивает их по горизонтали (параллельное слияние). Если угодно, команда paste двойственна команде , которая осуществляет вертикальную конкатенацию файлов, размещая один файл вслед за другим. В последней из приведенных синтаксических форм команда paste принимает на себя функции более старой команды с таким же именем, соединяя последовательные строки входного файла (последовательное слияние). Во всех случаях строки склеиваются посредством символа табуляции или, как возможный вариант, посредством символов из списка. Команда paste помещает результирующую строку на стандартный вывод, поэтому она (команда) может служить началом конвейера или фильтром, если вместо имени файла указать -.
Опции имеют следующий смысл:
Если эта опция не указана, символы перевода строки во всех файлах, кроме последнего, (либо, в случае опции -s, в последней строке файла) заменяются символами табуляции. Непосредственно следующие за -d символы используются при конкатенации строк вместо символов табуляции. Список этих символов рассматривается как кольцевой, то есть будучи исчерпан, он используется повторно. При параллельном слиянии (то есть в отсутствие опции -s) строки из последнего файла всегда завершаются символом перевода строки, а не символами из списка. Список может содержать следующие управляющие символы: \n (перевод строки), \t (символ табуляции), \\ (обратная наклонная черта), а также \0 (пустая цепочка, а не нулевой символ). Может оказаться, что входящим в список символам приписан специальный смысл в языке shell - в этом случае потребуются кавычки (например, обратная наклонная черта должна быть задана как -d"\\\\").
ПРИМЕРЫ
Выдача каталога в один столбец:
ls | paste
Выдача каталога в четыре столбца:
ls | paste - - -
Попарное об единение строк файла f1:
paste -s -d"\t\n" f1
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
line too long
Длина результирующей строки превышает 511 символов.
too many files
Число входных файлов не должно превышать 12. При наличии опции -s это ограничение отсутствует.
СЮРПРИЗЫ
В режиме опции -s с несколькими файлами команда работает неверно.
НАЗВАНИЕ
pause - приостановка процесса до получения сигнала
СИНТАКСИС
pause ( )
ОПИСАНИЕ
Системный вызов pause приостанавливает вызывающий процесс до получения им сигнала. Сигнал должен отличаться от тех сигналов, которые игнорируются вызывающим процессом.
Если сигнал привел к завершению выполнения вызывающего процесса, то возврата из pause не будет.
Если сигнал перехватывается вызывающим процессом, и управление возвращается от функции обработки сигнала [см. ], то вызывающий процесс возобновляет выполнение с места приостановки. Значение, возвращаемое в этом случае системным вызовом pause, равно -1, а переменная errno принимает значение, равное EINTR [см. ].
СМ. ТАКЖЕ
, , , , .
НАЗВАНИЕ
pcat - распаковка файлов
СИНТАКСИС
pcat файл ...
ОПИСАНИЕ
Команда pcat выполняет над упакованными файлами те же действия, что и команда над обычными файлами, за исключением того, что команда pcat не может быть использована в качестве фильтра. Исходные файлы распаковываются и выдаются на стандартный вывод. Так, чтобы распечать упакованный файл с именем f1.z, используйте следующую команду:
pcat f1.z
или просто:
pcat f1
Чтобы создать неупакованную копию какого-либо упакованного файла с именем f1.z без разрушения оригинала, используйте команду вида:
pcat f1 > f2
Команда pcat возвращает значение, равное количеству файлов, которые не удалось распаковать. Неудача может об ясняться следующими причинами:
Имя файла (без .z) состоит более чем из 12 символов. Файл не открывается. Файл не является результатом выполнения команды упаковки .
СМ. ТАКЖЕ
, , .
НАЗВАНИЕ
pcnfsd - процесс опознавания связи pc-nfs и буферизации вывода на печать
СИНТАКСИС
/etc/pcnfsd [-d] [-s spooldir]
ОПИСАНИЕ
Процесс pcnfsd обрабатывает запросы, связанные с опознаванием связи и буферизацией вывода и поступающие от клиентов MS-DOS, которые работают в сети Sun Microsystem's PC-NFS. Как сами запросы, так и ответы на них пересылаются с помощью пакета RPC/XDR. По получении запроса на опознавание связи pcnfsd обращается к файлу паролей сервера и проверяет совпадение пароля, посланного клиентом MS-DOS, с паролем локальной машины. Клиенту посылается сообщение о приеме или отказе. В случае успеха возвращается также пара значений uid/gid (пользовательский код/групповой код). Если указанный в запросе регистрационный счет не существует, связь не опознается.
Буферизация вывода состоит из двух этапов: инициализация буферного пространства и запуск вывода. Когда сервер получает запрос на инициализацию, имя каталога буферизации составляется из spooldir и имени клиентской машины. Этот путь сообщается клиенту. Клиент монтирует каталог. Когда буферный файл (spool file) будет готов для вывода, серверу будет послан запрос на запуск вывода. Сервер перешлет файл подсистеме буферизации вывода.
Опции:
СМ. ТАКЖЕ
, , getpwent(1)
НАЗВАНИЕ
pdp11
СИНТАКСИС
pdp11
ОПИСАНИЕ
Код завершения команды pdp11 равен 0 (истина), если Вы работаете на PDP-11/45 или PDP-11/70; в противном случае код завершения отличен от нуля.
СМ. ТАКЖЕ
.
НАЗВАНИЕ
perror, errno, sys_errlist, sys_nerr - системные сообщения об ошибках
СИНТАКСИС
void perror (s) char *s;
extern int errno;
extern char *sys_errlist [];
extern int sys_nerr;
ОПИСАНИЕ
Функция perror формирует в стандартном протоколе сообщение, которое описывает последнюю ошибку, случившуюся во время выполнения системного вызова или библиотечной функции. Сначала выдается цепочка-аргумент s, затем двоеточие и пробел, затем собственно сообщение и символ перевода строки (однако, если цепочка s пуста, двоеточие не выдается). Чаще всего аргумент s включает имя программы, в которой возникла ошибка. Код ошибки извлекается из внешней переменной errno, которой он присваивается при возникновении ошибки, и которая не изменяется вызовами, не приведшими к ошибке.
Чтобы упростить нестандартное форматирование сообщений, предоставляется массив текстов сообщений sys_errlist; для получения текста сообщения без символа перевода строки можно использовать errno в качестве индекса в этом массиве. Sys_nerr - число сообщений в массиве; это значение следует проверять, поскольку новые коды ошибок могут быть добавлены в систему без соответствующей коррекции сообщений.
СМ. ТАКЖЕ
.
ИМЯ
pfbtops - переводит шрифт PostScript в .pfb формат (ASCII)
СИНТАКСИС
pfbtops [ pfb_file ]
ОПИСАНИЕ
pfbtops переводит шрифт PostScript в .pfb формат ASCII. Если pfb_file опущен, то файл pfb будет читаться со стандартного ввода. ASCII формат шрифта PostScript будет писаться на стандартный вывод. PostScript шрифты для MS-DOS нормально переводятся в .pfb формат.
Результирующий формат ASCII PostScript шрифта может быть использован с groff.
СМ. ТАКЖЕ
grops(1)
НАЗВАНИЕ
pg - фильтр для просмотра файлов на экране
СИНТАКСИС
pg [-число] [-p пригл] [-c] [-e] [-f] [-n] [-s] [+номер_строки] [+/шаблон/] [файл ...]
ОПИСАНИЕ
Команда pg позволяет просматривать файлы страницами, равными по размеру экрану. Если имена файлов не заданы или задан символ -, то просматривается стандартный ввод. После вывода очередной страницы следует приглашение. Если пользователь нажмет клавишу возврата каретки, то будет выведена очередная страница; остальные возможности перечислены ниже.
Эта команда отличается от других команд страничного просмотра тем, что позволяет возвращаться по тексту назад. Как это делается - описано ниже.
Для определения характеристик терминала команда pg просматривает базу данных для типа терминала, заданного переменной окружения TERM. Если переменная TERM не определена, предполагается, что тип терминала - dumb.
Опции команды:
Целое число, задающее размер (в строках) страницы, которое следует использовать вместо значения по умолчанию. (На терминале, содержащем 24 строки, подразумеваемый размер страницы равен 23.)
Изменение текста приглашения на пригл. Если строка приглашения содержит %d, то при выводе первая пара символов %d будет заменена номером текущей страницы. Строка приглашения по умолчанию состоит из единственного символа :.
Указание номера_строки, с которого следует начинать просмотр.
Указание шаблона для поиска строки, с которой начинается просмотр. <
НАЗВАНИЕ
pipe - создание межпроцессного канала
СИНТАКСИС
int pipe (fildes) int fildes [2];
ОПИСАНИЕ
Системный вызов pipe создает механизм ввода/вывода, называемый каналом, и возвращает два дескриптора файла fildes[0] и fildes[1]. Дескриптор fildes[0] открыт на чтение, дескриптор fildes[1] - на запись.
Канал буферизует до 5120 байт данных; запись в него большего количества информации без считывания приведет к блокированию пишущего процесса. Посредством дескриптора fildes[0] информация читается в том же порядке, в каком она записывалась с помощью дескриптора fildes[1].
Системный вызов pipe завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EMFILE] Превышается максимально допустимое количество файлов, открытых одновременно в одном процессе. [ENFILE] Переполнена системная таблица файлов.
СМ. ТАКЖЕ
, . в Справочнике пользователя.
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
НАЗВАНИЕ
plock - удержание процесса в памяти
СИНТАКСИС
#include <sys/lock.h>
int plock (op) int op;
ОПИСАНИЕ
Системный вызов plock позволяет вызвавшему его процессу удержать в памяти сегмент команд, данных, или оба сегмента. После этого указанные сегменты не вытесняются из памяти при подкачке страниц, принадлежащих другим процессам. Посредством plock можно также отменить удержание сегментов в памяти. У процесса, вызывающего plock, действующий идентификатор пользователя должен быть идентификатором суперпользователя. Аргумент op задает требуемые действия:
PROCLOCK Удерживать в памяти сегменты команд и данных.
TXTLOCK Удерживать в памяти сегмент команд.
DATLOCK Удерживать в памяти сегмент данных.
UNLOCK Отменить удержание.
Указанное действие не выполняется и системный вызов plock завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EPERM] Соответствующий процессу действующий идентификатор пользователя не является идентификатором суперпользователя. [EINVAL] Аргумент op равен PROCLOCK, однако по крайней мере один сегмент процесса уже удерживается в памяти. [EINVAL] Аргумент op равен TXTLOCK, однако сегмент команд (или весь процесс) уже удерживается в памяти. [EINVAL] Аргумент op равен DATLOCK, однако сегмент данных (или весь процесс) уже удерживается в памяти. [EINVAL] Аргумент op равен UNLOCK, но ни один сегмент процесса не удерживается в памяти. [EAGAIN] Памяти недостаточно.
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
НАЗВАНИЕ
plot - графический интерфейс
СИНТАКСИС
openpl ( )
erase ( )
label (s) char *s;
line (x1, y1, x2, y2) int x1, y1, x2, y2;
circle (x, y, r) int x, y, r;
arc (x, y, x0, y0, x1, y1) int x, y, x0, y0, x1, y1;
move (x, y) int x, y;
cont (x, y) int x, y;
point (x, y) int x, y;
linemod (s) char *s;
space (x0, y0, x1, y1) int x0, y0, x1, y1;
closepl ( )
ОПИСАНИЕ
Описываемые функции генерируют графический вывод в относительно независимой от устройства форме. В первую очередь, с помощью функции space, нужно задать область рисования [см. ]. Затем следует вызвать функцию openpl, чтобы открыть устройство на запись. Функция closepl выталкивает буфера и закрывает устройство.
Функция circle рисует окружность радиуса r с центром в точке (x, y).
Функция arc рисует дугу окружности с центром в точке (x, y), проходящую от точки (x0, y0) до (x1, y1).
Цепочки символов - аргументы функций label и linemod должны ограничиваться нулевыми байтами и не должны содержать переводов строк.
Описание других функций см. в .
Перечисленные ниже библиотечные файлы предоставляют несколько разновидностей рисующих функций.
ФАЙЛЫ
LIBDIR/libplot.a Вывод для фильтров группы . LIBDIR/lib300.pa Вывод для DASI 300. LIBDIR/lib300.a Вывод для DASI 300s. LIBDIR/lib450.a Вывод для DASI 450. LIBDIR/lib4014.a Вывод для Tektronix 4014.
Обычно каталог LIBDIR - это /usr/lib.
СМ. ТАКЖЕ
. , , в Справочнике пользователя.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции находятся в библиотеке plot и подключаются при использовании опции -lplot команд и .
Для выполнения рисующей программы необходимо использовать конструкцию вида
a.out | tplot
Описанные функции используют стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод.
НАЗВАНИЕ
plot - графический интерфейс
ОПИСАНИЕ
Файлы данного формата порождаются функциями из и интерпретируются графическими фильтрами, описанными в . Графический файл - это последовательность инструкций рисования. Каждая инструкция начинается с латинской буквы, за которой обычно следуют байты двоичной информации. Инструкции выполняются последовательно. Точка задается четырьмя байтами, содержащими значения координат x и y в виде коротких целых чисел. Последняя точка в инструкциях l, m, n и p становится текущей точкой для следующей инструкции.
Каждое из приведенных ниже описаний начинается с имени соответствующей функции из .
Ниже описаны параметры установки области для устройств, поддерживаемых фильтрами из , обеспечивающие заполнение всей области рисования. Верхний предел лежит непосредственно за областью рисования. В любом случае область рисования считается квадратом; точки, расположенные вне квадрата, могут быть изображены на устройствах с не квадратным экраном/листом:
СМ. ТАКЖЕ
, , .
, в Справочнике пользователя.
ПРЕДОСТЕРЕЖЕНИЯ
Две библиотеки, и , используют имена erase ( ) и move ( ). В версии библиотеки curses они являются макросами. Если нужно работать с обеими библиотеками, поместите в отдельный файл программы, использующие , и/или примените к ним директивы #undef move( ) и #undef erase( ).
НАЗВАНИЕ
pnch - формат файла для образов перфокарт
ОПИСАНИЕ
Формат PNCH является удобным представлением для файлов, содержащих образы перфокарт в произвольной кодировке.
Файл в формате PNCH представляет собой просто последовательность записей-перфокарт. Запись-перфокарта состоит из одного управляющего байта, за которым следует произвольное число байт данных. Управляющий байт определяет число байт данных; оно должно лежать в диапазоне 0-80. Байты данных представляют собой 8-битные коды символов, составляющих образ перфокарты. Если байтов данных меньше, чем 80, считается, что остаток перфокарты содержит только пробелы.
НАЗВАНИЕ
poll - мультиплексирование псевдоустройств по вводу/выводу
СИНТАКСИС
#include <stropts.h> #include <poll.h>
int poll (fds, nfds, timeout) struct pollfd fds [ ]; unsigned long nfds; int timeout;
ОПИСАНИЕ
Системный вызов poll предоставляет пользователю механизм одновременного управления вводом/выводом (мультиплексирования) для набора дескрипторов открытых потоков [см. ]. Poll идентифицирует потоки, с которыми пользователь может обменяться сообщениями, а также потоки, в которых произошли определенные события. Сообщения можно принимать с помощью системных вызовов или , а посылать посредством или . Некоторые команды из группы , такие как I_RECVFD и I_SENDFD [см. ], также могут быть использованы для приема и посылки сообщений.
Аргумент fds задает дескрипторы файлов, которые должны анализироваться, и интересующие пользователя события для каждого из дескрипторов. Fds есть указатель на массив из стольких элементов, сколько дескрипторов файлов интересует пользователя. Элементами массива являются структуры типа pollfd, содержащие следующие элементы:
int fd; /* Дескриптор файла */ short events; /* Интересующие события */ short revents; /* Происшедшие события */
Компонент fd задает дескриптор открытого файла, а events и revents являются масками, построенными с помощью побитной операции ИЛИ из следующих флагов:
POLLIN В очереди чтения истока есть неприоритетное сообщение или сообщение, передающее дескриптор файла (см. I_RECVFD). Этот флаг устанавливается и в том случае, если сообщение имеет нулевую длину. В компоненте revents этот флаг не может присутствовать одновременно с флагом POLLPRI. POLLPRI В очереди чтения истока есть приоритетное сообщение. Этот флаг устанавливается и в том случае, если сообщение имеет нулевую длину. В компоненте revents этот флаг не может присутствовать одновременно с флагом POLLIN. POLLOUT Верхняя очередь записи потока неполна [см. ]. Приоритетные управляющие сообщения могут быть посланы в любое время (см. ). POLLERR В исток потока поступило сообщение об ошибке. Флаг допустим только в revents; в events он не используется. POLLHUP В потоке произошло освобождение линии. Этот флаг не может присутствовать одновременно с флагом POLLOUT: поток не может быть доступным на запись, если произошло освобождение линии. Этот флаг, однако, может присутствовать одновременно с флагами POLLIN и POLLPRI. Флаг POLLHUP допустим только в revents; в events он не используется. POLLNVAL Дескриптор fd не соответствует открытому потоку. Флаг допустим только в revents; в events он не используется.
НАЗВАНИЕ
popen, pclose - создание и ликвидация канала между программой и командой
СИНТАКСИС
#include <stdio.h>
FILE *popen (command, type) char *command, *type;
int pclose (stream) FILE *stream;
ОПИСАНИЕ
Аргументами функции popen являются указатели на цепочки символов с завершающим нулевым байтом. Первая из них, command, содержит команду shell'а, а вторая задает режим ввода/вывода: "r" для чтения и "w" для записи. Функция popen создает канал между вызывающей программой и указанной командой. Возвращаемое значение - это указатель на поток. Если режим равен "w", то можно писать на стандартный ввод команды, выводя в созданный поток. Если режим равен "r", то можно читать со стандартного вывода команды, вводя из созданного потока.
Поток, открытый с помощью popen, должен быть закрыт с помощью функции pclose, которая ожидает завершения запущенного процесса выполнения команды и выдает код его завершения.
Поскольку открытые файлы разделяются, команда с режимом "r" может быть использована как входной фильтр, а команда с режимом "w" - как выходной фильтр.
ПРИМЕР
Типичным является следующий пример:
char *cmd = "ls *.c"; FILE *ptr; if ((ptr = popen (cmd, "r")) != NULL) while (fgets (buf, n, ptr)) != NULL) (void) printf ("%s", buf);
На стандартный вывод будут записаны имена всех файлов с расширением .c, принадлежащих текущему каталогу.
СМ. ТАКЖЕ
, , , , , .
ДИАГНОСТИКА
Функция popen возвращает пустой указатель (NULL), если файл или процесс не могут быть созданы.
Функция pclose возвращает -1, если поток не ассоциирован с командой посредством popen.
ПРЕДОСТЕРЕЖЕНИЯ
Если требуется, чтобы вызывающий процесс и процесс, порождаемый по popen, одновременно читали или писали в общие файлы, то нельзя при этом пользоваться буферизованным вводом/выводом, так как данные в буферах перемешаются непредсказуемо. Проблемы с выходным фильтром могут быть решены путем аккуратного выталкивания буферов с помощью функции fflush [см. ].
НАЗВАНИЕ
portmap - точка подключения DARPA к преобразователю программных номеров RPC
СИНТАКСИС
/etc/portmap
ОПИСАНИЕ
Portmap является сервером, который преобразует программные номера RPC в номера портов протокола DARPA. Он обслуживает все обращения к RPC.
Сервер RPC при запуске сообщает процессу portmap номер прослушиваемого порта, а также номера тех программ, которые он готовится обслужить. Если клиенту нужно обратиться к RPC с конкретным номером программы, он сначала должен войти в контакт с процессом portmap на серверной машине и определить номер порта связи с пакетами RPC.
СМ. ТАКЖЕ
ЗАМЕЧАНИЯ
Если portmap дает отказ, все серверы должны быть перезапущены.
НАЗВАНИЕ
pr - печать файлов
СИНТАКСИС
pr [+стр] [-кол] [-a] [-m] [-d] [-e[символ][число]] [-i[символ][число]] [-n[символ][число]] [-wширина] [-oотс] [-lдлина] [-h текст] [-p] [-f [-r] [-t] [-sсимвол] [файл ...]
ОПИСАНИЕ
Команда pr форматирует и выдает файлы на стандартный вывод. Если имена файлов не заданы или задан символ -, информация берется со стандартного ввода.
По умолчанию выдача разбивается на страницы, каждая из которых содержит в заголовке свой номер, дату, время и имя файла. Длина страницы 66 строк, включая 10 строк заголовка и хвостовика. Заголовок состоит из двух пустых строк, одной строки текста (можно изменить опцией -h) и еще двух пустых строк; хвостовик состоит из пяти пустых строк. При выводе в одну колонку ширина строки не может быть задана и считается неограниченной. При выводе в несколько колонок ширину строки можно задать, а по умолчанию она равна 72. Диагностические сообщения (при неверных опциях) выдаются в конце стандартного вывода, связанного с терминалом, а не вклиниваются в выводимый текст.
По умолчанию колонки имеют одинаковую ширину и разделены по крайней мере одним пробелом; строки, не помещающиеся на странице, обрезаются. Если задана опция -s, строки не обрезаются, а колонки отделяются друг от друга символом-разделителем.
Для вывода в несколько колонок следует использовать опции -кол или -m. Опцию -a можно использовать только в сочетании с опцией -кол, но не -m.
Если стандартный вывод назначен на терминал, до окончания работы pr он закрывается от приема сообщений, посланных командой .
Перечисленные ниже опции могут быть заданы по одной или вместе в произвольном порядке:
+стр Начать печать со страницы стр (по умолчанию с 1).
-кол Печать в кол колонок (по умолчанию 1). При печати в несколько колонок автоматически действуют опции -e и -i. Эта опция несовместима с опцией -m.
-a Печать в несколько колонок с упорядочением по строкам. Кол должно быть больше единицы. Если строка не помещается в колонке, она обрезается.
-m Слияние и печать всех файлов одновременно, по одному в колонке. Максимальное число сливаемых файлов - 8. Если строка не помещается в колонке, она обрезается. Эта опция несовместима с опцией -кол.
-d Выдача через строчку. Если образующиеся пустые строки оказываются в начале страницы, они аннулируются.
-e[символ][число] Установка табуляции через заданное число позиций, начиная с первой. Если число равно 0 или опущено, то предполагается обычная табуляция в каждой восьмой позиции. Символы табуляции во входном файле развертываются в соответствующее количество пробелов. Если задан любой нецифровой символ, он рассматривается как символ табуляции во входном файле. Естественно, подразумеваемым значением символа является символ табуляции.
-i[символ][число] При выводе, где это возможно, последовательности пробелов заменяются символами табуляции, считая что табуляции установлены через заданное число позиций, начиная с первой. Если число равно 0 или опущено, то предполагается обычная табуляция в каждой восьмой позиции. Если задан любой нецифровой символ, он выводится в качестве символа табуляции. Естественно, подразумеваемым значением символа является символ табуляции.
-n[символ][число] Производится нумерация строк. Номер занимает (число+1) первых позиций каждой колонки при обычном выводе или каждой строки при выводе с опцией -m. Если задан любой нецифровой символ, то он присоединяется к номеру строки, отделяя ее от последующего текста. Подразумеваемым значением символа является символ табуляции.
-wширина Установка ширины строки (по умолчанию - 72 позиции). Эта опция действует только при печати в несколько колонок (опции кол и -m). При печати в одну колонку ограничений на ширину строки нет.
-oотс Установка отступа слева на отс позиций (по умол чанию - на 0). Количество позиций в каждой строке есть сумма ширины и отступа.
-lдлина Установка длины страницы (по умолчанию 66). -l0 интерпретируется как -l66. Если длина равна или меньше 10, то действует опция -t (подавление заголовка и хвостовика).
-h текст Замена имени файла в заголовке текстом. Опция игнорируется, если задана опция -t или -l и длина равна или меньше 10. (Эта опция - единственная в команде pr, при записи которой требуется отделять аргумент пробелом.)
-p Пауза перед выдачей каждой страницы, если вывод назначен на терминал (pr включит звонок и будет ждать нажатия клавиши возврата каретки).
-f Использовать символы перехода к новой странице (по умолчанию для перехода на новую страницу используется последовательность переводов строк). Делать паузу перед выдачей первой страницы, если стандартный вывод назначен на терминал.
-r Подавление диагностических сообщений при ошибках открытия файлов.
-t Подавление печати 5-строчного идентифицирующего заголовка и 5-строчного хвостовика, сопровождающих обычно каждую страницу. Завершение печати после вывода последней строки каждого файла, без перехода в конец страницы.
-sсимвол Разделение столбцов единственным символом, а не соответствующим количеством пробелов. Подразумеваемым значением символа является символ табуляции.
ПРИМЕРЫ
Напечатать файлы f1 и f2 в три колонки, через строчку, с заголовком "file list":
pr -3dh "file list" f1 f2
Переписать файл f3 в f4, расставив табуляции в позициях 10, 19, 28, 37, ...:
pr -e9 -t <f3 >f4
ФАЙЛЫ
/dev/tty* Для задержки сообщений.
СМ. ТАКЖЕ
, .
НАЗВАНИЕ
prf - псевдоустройство для накопления и анализа временного профиля системы
ОПИСАНИЕ
Специальный файл /dev/prf обеспечивает доступ к информации об активности операционной системы. С помощью записи в этот файл подсистеме измерения активности системы передаются адреса отслеживаемых процедур. Чтение из данного файла возвращает эти адреса и набор счетчиков, характеризующих активность между смежными адресами.
Регистрационный механизм управляется системными часами. Значение счетчика команд опрашивается с линейной частотой. Для значений счетчика команд, принадлежащих операционной системе, находится соответствующая процедура и для нее увеличивается счетчик. Эта информация используется при последующей обработке.
ФАЙЛЫ
/dev/prf
СМ. ТАКЖЕ
.
НАЗВАНИЕ
printf, fprintf, sprintf, snprintf, asprintf, vprintf, vfprintf, vsprintf, vsnprintf, vasprintf - вывод с преобразованием по формату
СИНТАКСИС
#include <stdio.h>
int printf (format, val ...) char *format;
int fprintf (stream, format, val ...) FILE *stream; char *format;
int sprintf (s, format [, val] ...) char *s, *format;
int snprintf(char *str, size_tsize, const char *format, ...)
int asprintf(char **ret, const char *format, ...)
#include <stdarg.h>
int vprintf(const char *format, va_list ap)
int vfprintf(FILE *stream, const char *format, va_list ap)
int vsprintf(char *str, char *format, va_list ap)
int vsnprintf(char *str, size_t size, const char *format, va_list ap)
int vasprintf(char **ret, const char *format, va_list ap)
ОПИСАНИЕ
Функция printf направляет данные в стандартный поток вывода stdin. Функция fprintf направляет данные в поток вывода, заданный аргументом stream. Функция sprintf направляет данные, заканчивающиеся пустым символом (\0), в массив s; пользователь должен позаботиться о выделении достаточного количества памяти для массива. Каждая функция возвращает число переданных символов (не считая пустого в случае sprintf), или отрицательное число, если при выводе обнаружилась ошибка.
Каждая из перечисленных функций преобразует, форматирует и печатает выводимые значения val под управлением формата, заданного аргументом format. Формат - это цепочка символов, содержащая об екты двух категорий: обычные символы, которые просто копируются в выходной поток, и спецификаторы преобразований, каждому из которых соответствует одно, несколько или ни одного из выводимых значений. Если выводимых значений val недостаточно, результат непредсказуем; если их слишком много, избыточные игнорируются.
Каждый спецификатор преобразования начинается символом %, после которого последовательно записываются:
Флаги (один, несколько или ни одного), которые уточняют смысл спецификации преобразования. Необязательная последовательность десятичных цифр, задающая минимальную ширину поля, в котором изображается результат преобразования. Если результат может быть изображен меньшим количеством символов, то поле дополняется слева (или справа, если задан флаг выравнивания по левой границе) пробелами до минимальной ширины; если последовательность, задающая ширину поля, начинается нулем, то для дополнения используются нули. Точность, задающая минимальное количество цифр в изображении результата преобразования типа d, i, o, u, x, X, количество цифр после десятичной точки в изображении результата преобразования типа e, E, f, максимальное количество значащих цифр в изображении результата преобразования типа g, G, или максимальное количество символов в изображении результата преобразования типа s. Точность записывается в виде точки (.), за которой следует несколько десятичных цифр; отсутствие цифр интерпретируется как ноль. Дополнение результата символами, обусловленное точностью, подавляет дополнение, обусловленное шириной поля. Необязательный символ l, означающий, что относящиеся к нему преобразования d, i, o, u, x, X применяются к целым выводимым значениям типа long. Для остальных преобразований символ l игнорируется. Символ, обозначающий тип преобразования.
ИМЯ
printmail - форматирует почту в читаемый формат для печати
СИНТАКСИС
printmail {-p} {filename}
ОПИСАНИЕ
Printmail копирует все сообщения из указанного файла или из почтового ящика пользователя на стандартный вывод, разбивая его на строки.
ПРИМЕР
Типичное применение этой команды:
printmail | lpr
АВТОР
Elm Development Group
СМ. ТАКЖЕ
readmsg(1L)
ИМЯ
proctl - yпpaвляeт aктивными пpoцeccaми или гpyппaми пpoцeccoв
СИНТАКСИС
#include <sys/proctl.h>
proctl (pid, command, arg) int pid, command; char *arg;
ОПИСАНИЕ
Proctl выпoлняeт дeйcтвия c aктивными пpoцeccaми или гpyппaми пpoцeccoв. Oнa имeeт тoт жe фopмaт, чтo и фyнкция ioctl(S), нo в кaчecтвe пepвoгo apгyмeнтa вмecтo нoмepa oткpытoгo фaйлa иcпoльзyeт ID пpoцecca pid.
Command пocpeдcтвoм cимвoличecкoгo aнaлoгa цeлoгo чиcлa зaдaeт выпoлняeмoe дeйcтвиe. Arg являeтcя yкaзaтeлeм нa cтpyктypy дaнныx, oпpeдeляющyю пapaмeтpы, cвязaнныe c command.
Ecли pid блoьшe 0, command вoздeйcтвyeт нa пpoцecc, чeй ID paвeн pid. Pid мoжeт быть paвeн 1.
Ecли pid paвeн 0, command вoздeйcтвyeт нa вce пpoцeccы (кpoмe пpoцeccoв c ID 0 и 1), вxoдящиe в тy жe гpyппy пpoцeccoв, чтo и тeкyщий пpoцecc.
Ecли pid paвeн -1 и эффeктивный пoльзoвaтeльcкий ID тeкyщeгo пpoцecca нe пpивилeгиpoвaнный, command вoздeйcтвyeт нa вce пpoцeccы (кpoмe пpoцeccoв c ID 0 и 1), чeй peaльный пoльзoвaтeльcкий ID paвeн эффeктивнoмy пoльзoвaтeльcкoмy ID тeкyщeгo пpoцecca.
Ecли pid paвeн -1 и эффeктивный пoльзoвaтeльcкий ID тeкyщeгo пpoцecca пpивилeгиpoвaнный, command вoздeйcтвyeт нa вce пpoцeccы (кpoмe пpoцeccoв c ID 0 и 1).
Ecли pid oтpицaтeлeн, нo нe paвeн -1, command вoздeйcтвyeт нa вce пpoцeccы, вxoдящиe в гpyппy c ID, paвным aбcoлютнoмy знaчeнию pid.
Proctl aвapийнo зaвepшaeтcя, ecли выпoлняeтcя xoтя бы oднo из cлeдyющиx ycлoвий:
Oгpaничeния пo пaмяти
Bызoв aвapийнo зaвepшaeтcя, ecли в oблacти cвoпингa нe oкaзывaeтcя дocтaтoчнoгo мecтa. Этo oгpaничeниe мoжeт быть cнятo иcпoльзoвaниeм cлeдyющиx знaчeний apгyмeнтa command фyнкции proctl:
Cлeдyющий фpaгмeнт кoдa пoзвoляeт пpoцeccy выпoлнятьcя дaжe, ecли для нeгo нeт мecтa в oблacти cвoпингa:
if(argc<2) { fputs("usage: runbig command arg ...\n",stderr); ; } argv[argc]=0; if(proctl(getpid(),PRHUGEX,(char *)0)<0) { perror("runbig"); exit(1); }
BOЗВPAЩAEМOE ЗНAЧEНИE
B cлyчae oшибки вoзвpaщaeтcя знaчeниe -1 и в errno зaнocитcя кoд oшибки.
СМ. ТАКЖЕ
, ioctl(3), kill(3)
ЗAМEЧAНИЯ
Пpoгpaммы, иcпoльзyющиe эти фyнкции, дoлжны кoмпoнoвaтьcя c флaгoм -lx.
НАЗВАНИЕ
prof - вывод результатов профилирования
СИНТАКСИС
prof [-t] [-c] [-a] [-n] [-o] [-x] [-g] [-z] [-h] [-s] [-m файл_профиля] [прогр]
ОПИСАНИЕ
Команда prof интерпретирует файл_профиля, подготовленный с помощью функции . При этом читается таблица имен об ектного файла прогр (по умолчанию a.out) и соотносится с файлом_профиля (по умолчанию mon.out). Для каждого внешнего объекта из секции команд выдается время (в процентах), затраченное на выполнение участка программы между адресом данного объекта и адресом следующего. Кроме того, печатается число вызовов каждой функции и среднее время в миллисекундах, затраченное на один вызов.
Следующие взаимоисключающие опции определяют критерий сортировки выводимых строк:
Взаимоисключающие опции -o и -x задают формат вывода адресов объектов:
Следующие опции можно использовать в произвольной комбинации:
Использовать в качестве исходного файл_профиля, а не mon.out.
Программа создает файл с данными профилирования, если редактирование связей выполнялось командой с опцией -p. При применении данной опции в начало и конец программы вставляются вызовы функции . Второй из этих вызовов приводит к записи файла с результатами профилирования. Если нужно, чтобы для какой-то функции было выдано количество ее вызовов, файл с данной функцией следует компилировать с опцией -p.
Имя файла, создаваемого профилируемой программой, определяется по переменной окружения PROFDIR. В случае отсутствия переменной PROFDIR, в каталоге, текущем на момент окончания программы, создается файл mon.out. Если PROFDIR=цепочка, то создается файл цепочка/идентификатор_процесса.имя_программы, где имя_программы задается аргументом командной строки argv[0] с удаленным маршрутным префиксом. Если значение PROFDIR является пустой цепочкой, то данные о профилировании в файл не записываются.
В целях профилирования функция может быть разбита на подфункции с помощью макроса MARK [см. ].
ФАЙЛЫ
НАЗВАНИЕ
prof - подготовка временного профиля одной функции
СИНТАКСИС
#define MARK #include <prof.h>
void MARK (name)
ОПИСАНИЕ
Вызов макроса MARK введет метку с именем name, которая с точки зрения подготовки временного профиля трактуется аналогично точке входа функции. Выполнение команд макроса приведет к увеличению счетчика для данной метки, а затраченное время приплюсуется к предыдущей метке, введенной посредством макроса MARK, или, если таковой в пределах функции нет, то к точке входа функции.
Имя name может быть произвольной комбинацией букв, цифр и символов подчеркивания. В пределах одного файла все профилируемые имена должны быть уникальными, однако они могут совпадать с другими программными об ектами.
Чтобы данная возможность тонкого профилирования работала, имя MARK должно быть определено до того, как в текст будет включен файл <prof.h>. Имя MARK может быть определено с помощью директивы препроцессора, как это сделано выше, или с помощью аргумента командной строки, например:
cc -p -DMARK f1.c
Если имя MARK не определено, то предложения с макросом MARK (name) могут быть оставлены в исходных файлах, так как они будут проигнорированы.
Просмотреть подготовленный профиль можно с помощью опции -g программы .
ПРИМЕР
В данном примере макросы можно использовать для определения времени, затраченного на выполнение каждого цикла. Если этот пример не откомпилирован с определенным в командной строке именем MARK, то макросы игнорируются.
#include <prof.h> f1 () { int i,j; ... MARK(loop1); for (i = 0; i < 2000; i++) { ... } MARK(loop2); for (j = 0; j < 2000; j++) { ... } }
СМ. ТАКЖЕ
, .
в Справочнике пользователя.
ОГРАНИЧЕНИЯ
При вызове макроса MARK не должно быть пробелов между скобками и именем name, так как макрос определен в виде ассемблерных вставок и пробелы приведут к ошибке в метке.
НАЗВАНИЕ
profil - подготовка временного профиля программы
СИНТАКСИС
void profil (buff, bufsiz, offset, scale) char *buff; int bufsiz, offset, scale;
ОПИСАНИЕ
Аргумент buff указывает на область памяти, размер которой в байтах задается аргументом bufsiz. После выполнения данного системного вызова при каждом такте часов анализируется счетчик команд: из него вычитается значение offset и полученная разность умножается на коэффициент scale. Если результат соответствует какому-либо элементу внутри области buff, то данный элемент увеличивается на 1. Элемент определяется как последовательность байт длины sizeof(short).
Коэффициент scale интерпретируется как беззнаковая денормализованная двоичная дробь с фиксированной точкой, стоящей слева от границы полуслова. Так, коэффициент 0177777 (восьмеричное) дает взаимно-однозначное отображение значений счетчика команд на элементы области buff; 077777 отображает на один элемент пару соседних команд. При значении scale, равном 02, все команды отобразятся на первый элемент области buff, который в результате превратится в непрерываемые часы.
Если значение аргумента scale задано равным 0 или 1, получение профиля выключается. При bufsiz равном 0 профилирование не выключается, однако его результаты нигде не фиксируются. Профилирование выключается при выполнении системного вызова exec, но остается в процессе-потомке и родительском процессе после вызова fork. Профилирование отключается, если обращение к элементу области buff приведет к выходу за границы памяти, отведенной процессу.
СМ. ТАКЖЕ
, . в Справочнике пользователя.
ДИАГНОСТИКА
Не предусмотрена.
НАЗВАНИЕ
profile - формирование окружения при входе в систему
СИНТАКСИС
/etc/profile $HOME/.profile
ОПИСАНИЕ
Для всех пользователей, использующих shell [см. ] в качестве программы, которая запускается при входе в систему, как часть процедуры входа выполняются команды, содержащиеся в вышеуказанных файлах.
Файл /etc/profile позволяет администратору системы выполнить обслуживающие действия для всех пользователей. Типичными являются: сообщение системных новостей, сообщение об имеющейся для пользователя почте, установка подразумеваемых значений для переменных окружения. Возможно также выполнение особых действий при входе в систему пользователя root или при выполнении команды . Как правило, в профайле имеется строка для установки часового пояса [см. timezone(4)]:
. /etc/TIMEZONE
Файл $HOME/.profile используется для установки нужных конкретному пользователю переменных окружения и характеристик терминала. Следующий пример является типичным для профайла (за исключением комментариев):
# Объявить некоторые переменные окружения глобальными export MAIL PATH TERM
# Установить маску создания файла umask 22
# Сообщать о приходе почты MAIL=/usr/mail/$LOGNAME
# Добавить пользовательский каталог bin # в последовательность каталогов, # просматриваемых shell'ом при поиске команды PATH=$PATH:$HOME/bin
# Установить тип терминала TERM=vt100
# Инициализировать терминал. # При этом переменная окружения TERM # уже должна быть экспортирована tput init # Придать обычный смысл клавише забоя stty erase '^H' echoe
ФАЙЛЫ
/etc/TIMEZONE Установка часового пояса.
$HOME/.profile Установка окружения пользователя.
/etc/profile Установка системного окружения.
/etc/addprofile Действия, специфичные для конкретной системы.
/etc/ttytype Таблица соответствия линий и типов терминалов.
СМ. ТАКЖЕ
, timezone(4), , .
, , , , , в Справочнике пользователя.
в Справочнике администратора.
ПРИМЕЧАНИЯ
Необходимо проявлять осторожность при выполнении общесистемных действий в /etc/profile. Персональные профайлы .profile лучше подходят для выполнения почти всех действий, за исключением наиболее глобальных.
НАЗВАНИЕ
profile - устанавливает среду во время подключения к системе.
ОПИСАНИЕ
Необязательный файл, .profile, разрешает автоматическое выполнение комманд, когда пользователь не входил в систему. Этот файл в-основном используется для персонализации рабочей среды пользователя путем установления экспортируемых переменных среды и режима терминала (смотри environ(1)).
Когда пользователь входит, во входном каталоге входная оболочка пользователя ищет .profile. Если находит, перед началом сеанса оболочка выполняет команды в файле. Команды в файле могут иметь одинаковый формат, как если бы они вводились на клавиатуре. Любая строка, начинающаяся со знака (#), рассматривается как комментарий и игнорируется. Вот пример типичного файла:
# Tell me when new mail comes in MAIL=/usr/mail/myname # Add my /bin directory to the shell search sequence PATH=$PATH:$HOME/bin #Make some enviroment variables global export MAIL PATH TERM #Set file creation mask unmask 22
Отметим, что файл /etc/profile - профайл расширенной системы, который, если он существует, выполняется для каждого пользователя перед выполнением .profile пользователя.
ФАЙЛЫ
$HOME/.profile /etc/profile
СМ. ТАКЖЕ
, , , , stty(2), ,
НАЗВАНИЕ
profiler: prfld, prfstat, prfdc, prfsnap, prfpr - получение профиля работы системы UNIX
СИНТАКСИС
/etc/prfld [файл_с_системной_таблицей_имен] /etc/prfstat on /etc/prfstat off /etc/prfdc файл [период [час_окончания]] /etc/prfsnap файл /etc/prfpr файл [пороговое_значение [файл_с_системной_таблицей_имен]]
ОПИСАНИЕ
Утилиты prfld, prfstat, prfdc, prfsnap и prfpr образуют комплекс для анализа активности (профилирования) компонентов операционной системы UNIX.
Утилита prfld инициализирует регистрационный механизм. Генерируется таблица, содержащая начальные адреса каждой системной подпрограммы, выделенные из файла_с_системной_таблицей_имен.
Утилита prfstat служит для запуска и остановки регистрационного механизма. Накладные расходы при профилировании 500 процедур не превышают 1%. Утилита сообщает количество профилируемых процедур.
Утилиты prfdc и prfsnap выполняют сбор данных профилирования, накапливая в файле таблицы со значениями счетчика команд. Утилита prfdc будет сохранять счетчики в файле каждые период минут и выключится в час_окончания (допустимыми значениями для часа_окончания являются 0 24). Если файл существовал, prfdc в начале работы опустошит его. Утилита prfsnap собирает данные только во время вызова, добавляя к файлу значения счетчиков.
Утилита prfpr обрабатывает и распечатывает данные, собранные посредством prfdc или prfsnap. Каждый адрес преобразуется к ближайшему адресу процедуры (указанному в системной таблице имен) и выводится, если частота вызовов (в процентах) процедуры превышает пороговое_значение. Отметим, что в файле должны присутствовать как минимум два зафиксированных состояния таблицы со значениями счетчика команд.
ФАЙЛЫ
/dev/prf Интерфейс к данным профилирования и таблице со значениями счетчика команд. /unix Подразумеваемый файл с системной табли- цей имен.
СМ. ТАКЖЕ
в Справочнике пользователя.
, , в Справочнике программиста.
НАЗВАНИЕ
prs - печать SCCS-файлов
СИНТАКСИС
prs [-d[спецификация_данных]] [-r[с_идентификатор]] [-e] [-l] [-c[кон_время]] [-a] файл ...
ОПИСАНИЕ
Команда prs выдает на стандартный вывод части SCCS-файла или файл целиком [см. ] в формате, который задает пользователь. Если указано имя каталога, prs обрабатывает все файлы в этом каталоге, начинающиеся с s.; файлы, к которым нет доступа на чтение, игнорируются без дополнительных сообщений. Если указано имя -, происходит чтение со стандартного ввода, каждая строка при этом трактуется как имя SCCS-файла, подлежащего обработке. Файлы, не начинающиеся с s., и файлы, к которым нет доступа на чтение, также игнорируются без дополнительных сообщений.
В командной строке prs можно в любом порядке задавать опции и имена файлов.
Каждая опция независимо применяется к каждому файлу.
-d[спецификация_данных]
Используется для указания данных, подлежащих выводу. Спецификация_данных - это строка, состоящая из ключевых слов данных [см. ниже] и дополнительного текста, задаваемого пользователем.
-r[с_идентификатор]
Указывает, информация о какой версии требуется. Если с_идентификатор не указан, подразумевается самая поздняя версия.
-e Указывает, что требуется информация обо всех версиях, созданных не позднее версии, определенной в опции -r, или не позднее даты, заданной в опции -c.
-l Указывает, что требуется информация обо всех версиях, созданных не ранее версии, определенной в опции -r, или не ранее даты, заданной в опции -c.
-c[кон_время]
Кон_время имеет формат:
гг[мм[дд[чч[мм[сс]]]]]
Опущенные цифры по умолчанию имеют максимально возможные значения, например -c7502 эквивалентно -c750228235959. Любое число любых нецифровых символов может разделять пары цифр; например, можно задать кон_время в виде "-c77/2/2 9:22:25".
-a Указывает, что требуется информация как о существующих (типа D), так и об удаленных (типа R) версиях [см. ]. Если опция -a не указана, выдается информация только о существующих версиях.
Ключевые слова данных
НАЗВАНИЕ
ps - выдача информации о состоянии процессов
СИНТАКСИС
ps [-e] [-d] [-a] [-f] [-l] [-n файл_с_системой] [-t список_терминалов] [-p список_идентификаторов_процессов] [-u список_идентификаторов_пользователей] [-g список_идентификаторов_лидеров_групп]
ОПИСАНИЕ
Команда ps выдает информацию об активных процессах. По умолчанию информация дается только о процессах, ассоциированных с данным терминалом. Выводятся идентификатор процесса, идентификатор терминала, истраченное к данному моменту время ЦП и имя команды. Если нужна иная информация, следует пользоваться опциями.
Некоторые опции имеют один аргумент или список аргументов. Аргументы в списке могут быть либо отделены друг от друга запятыми, либо все вместе заключены в двойные кавычки и отделены пробелами или запятыми. Аргументы в списке_процессов и в списке_групп должны быть числами.
Командой ps обрабатываются следующие опции:
-e Вывести информацию обо всех процессах.
-d Вывести информацию обо всех процессах, кроме лидеров групп.
-a Вывести информацию обо всех наиболее часто запрашиваемых процессах, то есть обо всех процессах, кроме лидеров групп и процессов, не ассоциированных с терминалом.
-f Генерировать полный листинг (см. ниже раз яснение смысла колонок).
-l Генерировать листинг в длинном формате (см. ниже).
-n файл_с_системой
Считать, что операционная система загружена из файла_с_системой, а не из файла /unix.
-t список_терминалов
Выдавать информацию только о процессах, ассоциированных с терминалами из заданного списка_терминалов. Терминал - это либо имя файла-устройства, например ttyномер или console, либо просто номер, если имя файла начинается с tty.
-p список_идентификаторов_процессов
Выдавать информацию только об указанных процессах.
-u список_идентификаторов_пользователей
Выдавать информацию только о процессах с заданными идентификаторами или входными именами пользователей. Идентификатор пользователя выводится в числовом виде, а при наличии опции -f - в символьном.
-g список_идентификаторов_лидеров_групп
ИМЯ
pstat - Сообщает системную информацию.
СИНТАКСИС
pstat [ -aixpf ] [ -u ubase ] [ -c corefile ] [ -n namelist ] [file ]
ОПИСАНИЕ
Команда pstat интерпретирует содержание определенных системных таблиц, команда pstat выполняет поиск этих таблиц в файле /dev /mem и /dev/kmem. Если задан файл (аргумент file), то таблицы прежде разыскиваются в описанном файле, а затем в /dev/mem. Аналогично, опция -с позволяет вам указать для поиска файл corefile, в котором таблицы будут разыскиваться раньше, чем в /dev/mem. Необходимый список имен берется из файла /xenix. Доступны следующие опции:
-a Под действием опции -p описывает в первую очередь все сегменты процессов, а не процессы, которые уже действуют.
-i Печатает таблицу узлов со следующими заголовками:
LOC Центральное расположение входа в эту таблицу.
FLAGS Разнообразные переменные состояния, закодированные следующим образом:
L Заблокированное U Необходимо скорректировать время обновления файловой системы (F) A Необходимо скорректировать время доступа M Файловая система смонтирована здесь W Разыскивается другим процессом (Включен флаг L) T Содержит текстовый файл C Измененное время должно быть скорректировано
CNT Число открытых входов в файловую систему для данного узла.
DEV Старший и младший номер устройства файловой системы, в которой размещен данный узел.
INO I-номер в пределах указанного устройства.
MODE Биты режима, см. команду chmod(S).
NLK Число связей,ведущих к этому узлу.
UID Пользовательский идентификатор ID владельца
SIZ/DEV Число байтов в исходном файле, или старший и младший номера устройства специального файла.
-x Печатает текстовую таблицу со следующими заголовками (только 286):
LOC расположение входа в эту таблицу в памяти.
FLAGS Разнообразные переменные состояния, закодированные следующим образом:
T Команда в действии W Текст еще не записан на устройство перекачки L Загрузка в действии K Заблокирован w Запрошен (флаг L включен)
DADDR Адрес на диске при перекачке данных, кратный байтам BSIZE.
CADDR Адрес ядра, измеренный в блоках разрешающей способности управления памятью.
SIZE Размер текстового сегмента, измеренный в блоках разрешающей способности управления памятью.
IPTR Размещение ядра соответствующего узла.
CNT Число процессов, использующих этот текстовый сегмент.
CCNT Число процессов в ядре, использующих этот текстовый сегмент.
НАЗВАНИЕ
ptrace - трассировка процесса
СИНТАКСИС
int ptrace (request, pid, addr, data) int request, pid, addr, data;
ОПИСАНИЕ
Системный вызов ptrace предоставляет средства, используя которые родительский процесс может управлять выполнением порожденного процесса. В первую очередь этот вызов используется для реализации отладчиков с точками прерывания [см. ]. Порожденный процесс работает обычным образом, пока он не получает сигнал [см. список в ], после чего он приостанавливается, а его родительский процесс получает информацию об этом через . Пока порожденный процесс приостановлен, родительский процесс может читать и изменять образ его памяти, вызывая ptrace. Кроме того, родительский процесс может либо уничтожить порожденный процесс, либо возобновить его выполнение, возможно удалив сигнал, вызвавший остановку.
Аргумент request определяет действия, которые должен выполнить системный вызов ptrace. Возможны следующие действия:
Регистры общего назначения. Признаки результата в слове состояния процессора.
Поле u_ar0 структуры u содержит адрес массива, в котором сохраняются регистры, как общего назначения, так и специальные. Чтобы вычислить смещение этого массива от начала структуры, нужно в файле /unix найти имя u, извлечь адрес структуры и затем вычесть его из значения поля u_ar0. Порядок расположения регистров в упомянутом массиве описан во включаемом файле <sys/reg.h>.
Чтобы предупредить возможный обман, вызов ptrace подавляет возможность переустанавливать действующий идентификатор пользователя при последующих вызовах . Если трассируемый процесс вызывает exec, то он до выполнения первой команды из нового выполняемого файла останавливается, сообщая о получении сигнала SIGTRAP.
Системный вызов ptrace завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EIO] Некорректный параметр request. [ESRCH] Отсутствует порожденный процесс с идентификатором, равным pid, или он не вызывал ptrace с параметром request, равным 0.
СМ. ТАКЖЕ
, , , , .
НАЗВАНИЕ
ptx - упорядоченный предметный указатель
СИНТАКСИС
ptx [опции] [ввод [вывод]]
ОПИСАНИЕ
Команда ptx создает файл вывод, который можно обработать text formatter'ом и получить упорядоченный предметный указатель для файла ввод (по умолчанию - стандартный вывод и стандартный ввод). Выполнение делится на три фазы: на первой происходит упорядочение, когда для каждого ключевого слова на входной строке генерируется одна строка. Ключевые слова циклическим сдвигом ставятся в начало строк. Затем строки файла упорядочиваются. Наконец, в упорядоченных строках опять делается циклический сдвиг, так что ключевые слова оказываются на прежних местах в строке. Вывод ptx имеет вид:
.xx "хвост" "до ключа" "ключ и за ним" "голова"
где предполагается, что .xx - это макро nroff или troff(1), обеспечиваемая пользователем либо пакетом ??????? макро mptx(5). Поля до ключа и ключ и за ним содержат ??? mptx(5) - сс максимально возможную при печати часть строки вокруг ключевого слова. Хвост и голова, по крайней мере одна из которых - пустая строка, являются окружающими частями строки, достаточно малыми чтобы поместиться в свободном месте строки.
Можно использовать следующие опции:
Использовать в качестве ключевых только слова из файла с именем only.
Не использовать в качестве ключевых слова, находящиеся в файле с именем ignore. Если опции -i и -o опущены, в качестве файла ignore используется файл /usr/lib/ejgn.
Использовать символы из файла с именем break в качестве разделителей. Символ табуляции, перевод строки и пробелы используются в качестве разделителей всегда.
НАЗВАНИЕ
putc, putchar, fputc, putw - запись в поток символа или машинного слова
СИНТАКСИС
#include <stdio.h>
int putc (c, stream) char c; FILE *stream;
int putchar (c) char c;
int fputc (c, stream) char c; FILE *stream;
int putw (w, stream) int w; FILE *stream;
ОПИСАНИЕ
Макрос putc записывает символ c в поток вывода stream (в позицию, задаваемую указателем файла, если он определен). Макрос putchar (c) определяется как putc (c, stdout).
Функция fputc выполняет те же действия, что и макрос putc; она работает медленнее, чем putc, но занимает меньше пространства на каждое использование. Кроме того, функцию можно передавать в качестве аргумента.
Функция putw выводит машинное слово w (значение типа int) в поток вывода stream (в позицию, задаваемую указателем файла, если он определен). Размер слова машинно-зависим. Для данной системы он составляет 32 бита. Функция putw не требует и не выполняет выравнивание по границе слова в выходном файле.
СМ. ТАКЖЕ
, , , , , , , .
ДИАГНОСТИКА
В случае успеха описанные функции (кроме putw) возвращают выводимое значение. Функция putw возвращает ferror (stream). При неудаче они возвращают константу EOF. Ошибка возникает, если файл stream не открыт на запись или, если файл вывода не может расти. Так как EOF - допустимое целое значение, для распознавания ошибок putw нужно пользоваться функцией .
ОГРАНИЧЕНИЯ
Поскольку putc - макрос, аргумент stream вычисляется многократно, что существенно при наличии побочных эффектов. В частности, вызов putc (c, *f++) ведет себя нежелательным образом. В таких случаях следует использовать fputc.
Из-за возможных различий в длине слова и порядке байт файлы, сформированные при помощи putw, являются машинно-зависимыми и могут не быть прочитаны при помощи getw на другом процессоре.
НАЗВАНИЕ
putenv - изменение или расширение окружения
СИНТАКСИС
int putenv (string) char *string;
ОПИСАНИЕ
Аргумент string указывает на цепочку символов вида имя=значение. Функция putenv используется для присвоения переменной окружения имя заданного значения, при этом изменяется существующая переменная или создается новая. В любом случае цепочка, указанная аргументом string, становится частью окружения; таким образом, изменение этой цепочки приводит к изменению окружения.
Область памяти, на которую указывает string, становится ненужной после нового обращения к putenv с тем же именем.
СМ. ТАКЖЕ
, , , .
ДИАГНОСТИКА
Функция putenv возвращает ненулевое значение, если попытка получить дополнительное пространство памяти [посредством ] для расширенного окружения окончилась неудачей. Иначе возвращается ноль.
ПРЕДОСТЕРЕЖЕНИЯ
Функция putenv работает с окружением, указанным с помощью environ, и может быть использована вместе с функцией getenv. Однако envp (третий аргумент main) не изменяется.
При расширении окружения используется функция .
После вызова функции putenv алфавитная упорядоченность переменных окружения вообще говоря, нарушается.
Потенциальной ошибкой является вызов putenv с автоматической переменной в качестве аргумента, и последующий выход из вызывающей функции в то время, когда string еще является частью окружения.
НАЗВАНИЕ
putmsg - посылка сообщения в поток, ассоциированный с псевдоустройством
СИНТАКСИС
#include <stropts.h>
int putmsg (fd, ctlptr, dataptr, flags) int fd; struct strbuf *ctlptr; struct strbuf *dataptr; int flags;
ОПИСАНИЕ
Системный вызов putmsg создает сообщение [см. ] по содержимому буферов, указанных пользователем, и посылает сообщение в поток. Сообщение может состоять из двух частей: области данных и управляющей области, которые берутся из разных буферов (см. ниже). Семантика каждой части определяется модулем потока, который получает это сообщение.
Аргумент fd задает дескриптор файла, ассоциированный с открытым потоком.
Аргументы ctlptr и dataptr - это указатели на структуру типа strbuf, содержащую следующие элементы:
int maxlen; /* Максимальная длина буфера */ int len; /* Длина извлеченной информации */ char *buf; /* Указатель на буфер */
Аргумент ctlptr указывает на структуру, описывающую управляющую область сообщения, если таковая имеется. Компонент buf указывает на буфер, в котором размещается управляющая информация, а len задает количество байт, которое должно быть послано. Поле maxlen в системном вызове putmsg не используется [см. ]. Таким же образом dataptr задает область данных, если таковая имеется, которые должны быть включены в сообщение.
Аргумент flags может принимать два значения: 0 или RS_HIPRI (см. ниже).
Чтобы послать данные в сообщении, аргумент dataptr должен быть отличен от NULL, а значение компонента len должно быть неотрицательным. Чтобы послать управляющую информацию, соответствующие значения должны быть установлены для ctlptr. Область данных (управляющая область) не будет послана, если аргумент dataptr (ctlptr) равен NULL, или значение компонента len для dataptr (ctlptr) равно -1.
Если задана управляющая область и значение переменной, на которую указывает аргумент flags, равно RS_HIPRI, посылается приоритетное сообщение. Если значение по адресу flags равно 0, посылается неприоритетное сообщение. Если не указана управляющая область и значение по адресу flags равно RS_HIPRI, системный вызов putmsg завершается неудачей, а переменная errno получает значение EINVAL. Если не указана ни управляющая область ни область данных и значение по адресу flags равно 0, сообщение не посылается и возвращается нулевой результат.
НАЗВАНИЕ
putpwent - записать элемент файла паролей
СИНТАКСИС
#include <pwd.h>
int putpwent (p, f) struct passwd *p; FILE *f;
ОПИСАНИЕ
Функция putpwent является обратной к . Располагая указателем на структуру типа passwd, созданную getpwent (или getpwuid, или getpwnam), функция putpwent записывает строку в поток f, удовлетворяющий формату файла /etc/passwd.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
В случае ошибки функция putpwent выдает ненулевой результат; в противном случае возвращается 0.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции используют стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод.
НАЗВАНИЕ
puts, fputs - запись цепочки символов в поток
СИНТАКСИС
#include <stdio.h>
int puts (s) char *s;
int fputs (s, stream) char *s; FILE *stream;
ОПИСАНИЕ
Функция puts записывает ограниченную нулевым байтом цепочку символов, заданную указателем s, в поток стандартного вывода stdout. За цепочкой добавляется символ перевода строки.
Функция fputs выводит ограниченную нулевым байтом цепочку символов, заданную указателем s, в поток вывода stream. Перевод строки не добавляется.
Ни одна из этих функций не выводит ограничивающий цепочку нулевой байт.
СМ. ТАКЖЕ
, , , , , .
ДИАГНОСТИКА
Обе функции в случае ошибки возвращают значение EOF. Это происходит, если функция пытается писать в файл, который не был открыт на запись.
НАЗВАНИЕ
pwadmin - служит для административного обслуживания "возрастной" информации пароля.
СИНТАКСИС
pwadmin [-min weeks -max weeks] options
ОПИСАНИЕ
pwadmin используется для контроля и модификации "возрастной" информации в файле паролей. С этой командой могут использоваться следующие опции:
-d user Высвечивает "возрастную" информацию паролей. -f user Заставляет пользователя менять пароль при очередном входе в систему. -c user Не дает пользователю изменить пароль. -a user Активизирует "возрастной" контроль пароля для данного пользователя. Эта опция устанавливает минимальное количество недель, которое должно пройти, прежде чем пользователь сможет изменить свой пароль, и максимальное количество недель, в течение которого пользователь может держать свой пароль без изменения. Эти величины задаются переменными MINWEEKS и MAXWEEKS в файле /etc/default/passwd. Если этот файл не найден, или данные величины выходят за пределы диапазона 0 - 63, то по умолчанию используются величины 2 и 4. -n user Снимает "возрастной" контроль пароля. -min weeks Активизирует "возрастной" контроль пароля и устанавливает минимальное количество недель weeks, в течение которого пользователь не может изменять свой пароль.(Это удерживает пользователя от слишком быстрой замены нового пароля на старый.) -max weeks Активизирует "возрастной" контроль пароля и устанавливает количество недель weeks, в течение которого пользователь может держать свой пароль без изменений.
ФАЙЛЫ
/etc/paaswd /etc/default/passwd
СМ. ТАКЖЕ
, passwd(3)
ПРИМЕЧАНИЯ
Пользователь не должен пытаться установить новый пароль принудительно, устанавливая обе величины -min и -max в нуль. Для этого используйте опцию -f.
Пользователь не должен пытаться предотвратить очередное изменение пароля, устанавливая значение величины -min, больше чем -max. Для этого используйте опцию -c.
ИМЯ
pwcheck - Проверяет файл паролей.
СИНТАКСИС
pwcheck [file]
ОПИСАНИЕ
Команда pwcheck просматривает файл паролей и выявляет любые противоречия. Проверяется также законность количества полей, имени входа в систему, пользовательского идентификатора ID, группового идентификатора ID, кроме того выясняется, существует ли каталог вхождения в систему и необязательное имя программы. По умолчанию файл паролей - это /etc/passwd.
ФАЙЛЫ
/etc/passwd
СМ. ТАКЖЕ
, group(3), passwd(3)
НАЗВАНИЕ
pwck, grpck - проверка файлов паролей и групп
СИНТАКСИС
/etc/pwck [файл_паролей] /etc/grpck [файл_групп]
ОПИСАНИЕ
Утилита pwck просматривает файл_паролей (по умолчанию /etc/passwd) и выводит в стандартный протокол сообщения обо всех некорректностях. Проверяется число полей, входное имя, идентификатор пользователя, идентификатор группы, а также существование начального каталога и интерпретатора команд.
Утилита grpck контролирует файл_групп (по умолчанию /etc/group). Проверяется число полей, имя группы, идентификатор группы, а также то, что все перечисленные входные имена зарегистрированы в файле паролей. Выдаются сообщения и о пустых списках пользователей.
ФАЙЛЫ
/etc/group /etc/passwd
СМ. ТАКЖЕ
, в Справочнике программиста.
НАЗВАНИЕ
pwd - выдача имени текущего каталога
СИНТАКСИС
pwd
ОПИСАНИЕ
Команда pwd выдает имя текущего (рабочего) каталога.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
Сообщения "Cannot open ..." и "Read error in ..." могут означать, что нарушена файловая система. О нарушении необходимо сообщить администратору системы
НАЗВАНИЕ
qsort - быстрая сортировка
СИНТАКСИС
void qsort ((char *) base, nel, sizeof (*base), compar) unsigned int nel; int (*compar) ( );
ОПИСАНИЕ
Процедура qsort реализует алгоритм быстрой сортировки таблицы данных на своем месте.
Аргумент base является указателем на начало таблицы. Nel - число элементов в таблице. Compar - функция сравнения, аргументами которой при вызове служат два указателя на сравниваемые элементы. В соответствии с тем, какое целое число она возвращает: меньшее нуля, равное нулю или большее нуля, первый аргумент считается меньшим, равным или большим по отношению ко второму.
ПРИМЕЧАНИЯ
Указатель на начало таблицы должен иметь тип "указатель на элемент" и преобразовываться к типу "указатель на символ".
В сравнении, осуществляемом функцией compar, не обязательно должен участвовать каждый байт, поэтому элементы таблицы в дополнение к сравниваемым величинам могут содержать произвольные данные.
Порядок, в каком окажутся после сортировки два элемента, считающиеся равными при сравнении, непредсказуем.
СМ. ТАКЖЕ
, , .
в Справочнике пользователя
ИМЯ
quot - Выдает краткий список владельцев файловой системы.
СИНТАКСИС
quot [ options ] ... [ filesystem ]
ОПИСАНИЕ
Команда quot печатает количество блоков в поименованной файловой системе (аргумент filesystem), принадлежащих каждому пользователю на текущий момент. Если не указан аргумент filesystem, то проверяются файловые системы, заданные в файле /etc/mnttab.
ОПЦИИ
ncheck filesystem | sort +On | quot -n filesystem
ФАЙЛЫ
/etc/passwd Содержит имена пользователей /etc/mnttab Содержит список установленных файловых систем
СМ. ТАКЖЕ
, , , machine(5)
ЗАМЕЧАНИЯ
Пустые пространства в файлах учитываются как фактически занятые.
Считается, что блоки содержат по 512 байтов. В файловых системах, которые используют блоки по 1024 байта, о файле в 26 байтов сообщается, как об использующем 2 блока, т.к. он использует один блок в 1024 байта или два блока по 512 байтов. Смотрите команду machine(1) или используйте команду для определения размера файловой системы в блоках.
Смотрите также раздел ЗАМЕЧАНИЯ после команды .
ИМЯ
quota - показывает лимит дискового пространства для пользователей
СИНТАКСИС
quota [-g] [-u] [-v | -q] quota [-u] [-v | -q] user quota [-g] [-v | -q] group
ОПИСАНИЕ
Команда quota показывает установленные лимиты по использованию дискового пространства для пользователей. Только привилегированный пользователь может посмотреть установленные квоты для конкретных пользователей.
ОПЦИИ
Указзание ключей -u и -g вместе показывает ограничения для пользователя и для группы, к которой он принадлежит.
ФАЙЛЫ
quota.user quota.group /etc/fstab
ИСТОРИЯ
Команда quota появилась в 4.2BSD.
СМ. ТАКЖЕ
quotactl(2), fstab(5), edquota(8), quotacheck(8), quotaon(8), repquota(8), rpc.rquotad(8)