НАЗВАНИЕ
crypt, setkey, encrypt - шифровка хешированием
СИНТАКСИС
char *crypt (key, salt) char *key, *salt;
void setkey (key) char *key;
void encrypt (block, ignored) char *block; int ignored;
ОПИСАНИЕ
Функция crypt предназначена для шифровки пароля. Она основана на алгоритме шифровки хешированием, назначение которого, помимо всего прочего, - предупредить использование аппаратных средств раскрытия ключа.
Аргумент key представляет собой пароль, введенный пользователем. Salt - это двухсимвольная цепочка, выбираемая из множества [a-zA-Z0-9./]. Она настраивает алгоритм хеширования на один из 4096 вариантов, после чего пароль используется как ключ для циклической шифровки некоторой текстовой константы. Возвращаемое значение указывает на зашифрованный пароль. Его первые два символа равны salt.
Функции setkey и encrypt обеспечивают доступ (на довольно примитивном уровне) к алгоритму хеширования. Аргумент функции setkey - это символьный массив длиной 64, содержащий только символы с числовым значением 0 и 1 и изображающий цепочку бит. В каждой из восьми групп по 8 символов наименее значащий "бит" игнорируется. Полученный 56-битный ключ передается компьютеру и используется в алгоритме хеширования для шифровки цепочки block в функции encrypt.
Аргумент функции encrypt - символьный массив длиной 64, содержащий только символы с числовым значением 0 и 1. Аргумент преобразуется на месте в массив того же вида, изображающий биты аргумента после применения алгоритма хеширования с ключом, установленным в функции setkey. Аргумент ignored не используется, но должен быть задан.
СМ. ТАКЖЕ
, .
, , в Справочнике пользователя.
ОГРАНИЧЕНИЯ
Значение, возвращаемое функцией crypt, указывает на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова.
ИМЯ
dbminit, fetch, store, delete, firstkey, nextkey - yпpaвляeт бaзoй дaнныx
СИНТАКСИС
typedef struct {char *dptr;int dsize;} datum;
int dbminit (file) char *file;
datum fetch (key) datum key;
store (key, content) datum key, content;
delete (key) datum key;
datum firstkey ()
datum nextkey (key) datum key;
ОПИСАНИЕ
Эти фyнкции yпpaвляют paбoтoй бaзы дaнныx, в кoтopoй дocтyп к кaждoмy элeмeнтy бaзы ocyщecтвляeтcя пo ключy. Фyнкции мoгyт oбcлyживaть oчeнь бoльшиe бaзы дaнныx (дo миллиapдa блoкoв). Дocтyп пo ключy мoжeт быть кaк пpямым, тaк и пocлeдoвaтeльным. Пpoгpaммы, иcпoльзyющиe эти фyнкции, дoлжны кoмпoнoвaтьcя c флaгoм -ldbm.
Пoля key и content oпиcывaютcя c пoмoщью имeни типa datum, зaдaющeгo cтpoкy из dsize бaйтoв, нa кoтopyю yкaзывaeт dptr. Дoпycтимы пpoизвoльныe дaнныe в двoичнoй cиcтeмe cчиcлeния и cимвoльныe cтpoки. Бaзa дaнныx paзмeщaeтcя в двyx фaйлax. Пepвый фaйл этo кaтaлoг бaзы, coдepжaщий кapтy pacпpeдeлeния пaмяти. Bтopoй фaйл coдepжит coбcтвeннo дaнныe. Имя пepвoгo фaйлa имeeт cyффикc .dir, имя втopoгo - cyффикc .pag.
Для пoлyчeния дocтyпa к бaзe ee нyжнo oткpыть вызoвoм dbminit. B мoмeнт oткpытия фaйлы file.dir и file.pag (file - apгyмeнт фyнкции dbminit) дoлжны cyщecтвoвaть. Пycтaя бaзa coздaeтcя пyтeм coздaния этиx фaйлoв c нyлeвoй длинoй.
Пocлe oткpытия бaзы дaнныe из нee выбиpaютcя c пoмoщью фyнкции fetch и зaнocятcя в нee c пoмoщью фyнкции store. Bыбopкa и зaнeceниe пpoизвoдятcя c пoмoщью ключa - apгyмeнтa key. Kлюч и cвязaнныe c ним дaнныe yничтoжaютcя c пoмoщью фyнкции delete. Пocлeдoвaтeльный пpocмoтp вcex ключeй в бaзe мoжeт быть cдeлaн c пoмoщью фyнкций firstkey и nextkey. Firstkey вoзвpaщaeт пepвый ключ в бaзe, nextkey вoзвpaщaeт ключ, кoтopый cлeдyeт зa ключoм, являющимcя apгyмeнтoм фyнкции. Hижecлeдyющий цикл пoзвoляeт пpocмoтpeть вcю бaзy:
for(key=firstkey();key.dptr!=NULL;key=nextkey(key))
BOЗВPAЩAEМOE ЗНAЧEНИE
Фyнкции, вoзвpaщaющиe цeлыe знaчeния, в cлyчae oшибки вoзвpaщaют oтpицaтeльнoe чиcлo. B cлyчae ycпeшнoгo зaвepшeния вoзвpaщaeтcя 0. Фyнкции, вoзвpaщaющиe знaчeниe типa datum, в cлyчae oшибки ycтaнaвливaют пoлe dptr в NULL.
ЗAМEЧAНИЯ
НАЗВАНИЕ
directory: opendir, readdir, telldir, seekdir, rewinddir, closedir - операции над каталогами
СИНТАКСИС
#include <sys/types.h>
#include <dirent.h>
DIR *opendir (filename) char *filename;
struct dirent *readdir (dirp) DIR *dirp;
long telldir (dirp) DIR *dirp;
void seekdir (dirp, loc) DIR *dirp; long loc;
void rewinddir (dirp) DIR *dirp;
void closedir (dirp) DIR *dirp;
ОПИСАНИЕ
Функция opendir открывает каталог с именем filename и связывает с ним поток каталога. Opendir возвращает в качестве результата указатель, который используется в последующих операциях для идентификации потока каталога. Пустой указатель возвращается, если файл filename не доступен или не является каталогом, либо, если команда malloc(1M) не может выделить достаточного об ема памяти для структуры типа DIR или для буферов.
Функция readdir выдает указатель на следующий активный элемент каталога. Указатели на неактивные элементы каталога не выдаются. При достижении конца каталога или при выявлении некорректной позиции в каталоге возвращается пустой указатель.
Функция telldir выдает текущую позицию в указанном потоке каталога.
Функция seekdir устанавливает позицию для последующей операции readdir над потоком каталога. Данная позиция совпадает с той, которая была получена в результате выполнения операции telldir, вычислившей loc. Значения, которые возвращает telldir, корректны только в том случае, если каталог не сжимался и не расширялся. Такая проблема не возникает в случае версии 5, но может возникнуть для некоторых других типов файловых систем.
Операция rewinddir переустанавливает в начало позицию в указанном потоке каталога.
Операция closedir закрывает указанный поток каталога и освобождает структуру DIR.
При выполнении перечисленных операций могут возникнуть следующие ошибки:
opendir:
НАЗВАНИЕ
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - генерация равномерно распределенных псевдослучайных чисел
СИНТАКСИС
double drand48 ( )
double erand48 (xsubi) unsigned short xsubi [3];
long lrand48 ( )
long nrand48 (xsubi) unsigned short xsubi [3];
long mrand48 ( )
long jrand48 (xsubi) unsigned short xsubi [3];
void srand48 (seedval) long seedval;
unsigned short *seed48 (seed16v) unsigned short seed16v [3];
void lcong48 (param) unsigned short param [7];
ОПИСАНИЕ
Данное семейство функций порождает псевдослучайные числа с использованием широко известного линейного конгруэнтного алгоритма и 48-битной целой арифметики.
Функции drand48 и erand48 возвращают неотрицательные вещественные числа двойной точности, равномерно распределенные в интервале [0.0, 1.0).
Функции lrand48 и nrand48 возвращают неотрицательные целые числа типа long, равномерно распределенные в интервале [0, 2^31).
Функции mrand48 и jrand48 возвращают целые числа со знаком, типа long, равномерно распределенные в интервале [-2^31, 2^31).
Функции srand48, seed48 и lcong48 представляют собой инициализирующие точки входа, обращение к которым должно предшествовать вызову какой-либо из функций drand48, lrand48, mrand48. (Хотя это и не рекомендуется, в том случае, когда функции drand48, lrand48, mrand48 будут вызваны без предварительного обращения к инициализирующим точкам входа, подстановка постоянных начальных значений, принимаемых по умолчанию, будет произведена автоматически.) Функции erand48, nrand48 и jrand48 не требуют предварительного обращения к инициализирующим точкам входа.
Все программы работают, порождая последовательность 48-битных целых значений X [i] в соответствии с линейной конгруэнтной формулой
X [n+1] = (a * X [n] + c) mod m n 0
Параметр m = 2^48 и поэтому используется 48-битная целая арифметика. Если не было предварительного обращения к lcong48, для коэффициента a и аддитивной константы c будут приняты следующие значения:
a = 0x5DEECE66D = 0273673163155 c = 0xB = 013
НАЗВАНИЕ
exp, log, log10, pow, sqrt - показательная, логарифмическая, степенная функции и функция извлечения квадратного корня
СИНТАКСИС
#include <math.h>
double exp (x) double x;
double log (x) double x;
double log10 (x) double x;
double pow (x, y) double x, y;
double sqrt (x) double x;
ОПИСАНИЕ
Функция exp возвращает e^x.
Функция log возвращает натуральный логарифм аргумента x. Значение x должно быть положительным.
Функция log10 возвращает логарифм по основанию 10 аргумента x. Значение x должно быть положительным.
Функция pow возвращает x^y. Если значение x равно 0, то значение y должно быть положительным. Если значение x отрицательно, то значение y должно быть целым.
Функция sqrt возвращает неотрицательное значение квадратного корня из x. Значение x не может быть отрицательным.
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
Функция exp возвращает значение HUGE [см. ], если представление результирующего значения приводит к переполнению, и 0 - если к исчезновению порядка. В обоих случаях переменной errno присваивается значение ERANGE.
При неположительных аргументах функции log и log10 возвращают значение -HUGE и переменной errno присваивается значение EDOM. Кроме того, в стандартный протокол выдается сообщение о выходе за границы области определения или, при x=0, о попадании в точку сингулярности.
Функция pow возвращает нулевое значение, а переменной errno присваивается значение EDOM в случаях:
Если x=0 и значение y неположительно. Если значение x отрицательно и y не является целым.
В обоих случаях в стандартный протокол будет выдано сообщение о выходе за границы области определения. Если представление результирующего значения функции pow приводит к переполнению или к исчезновению порядка, то pow возвращает соответственно +HUGE, -HUGE или 0. Переменной errno присваивается значение ERANGE.
Функция sqrt возвращает нулевое значение, а переменной errno присваивается значение EDOM в случае, если x отрицательно. В стандартный протокол будет выдано сообщение о выходе за границы области определения.
Изложенная процедура обработки ошибок может быть изменена посредством функции .
НАЗВАНИЕ
getenv - получение значения переменной окружения
СИНТАКСИС
char *getenv (name) char *name;
ОПИСАНИЕ
Пусть аргумент name указывает на цепочку символов имя. Функция getenv просматривает список переменных окружения [см. ] в поисках цепочки вида имя=значение и возвращает указатель на значение в текущем окружении, если такая цепочка обнаружена, и пустой указатель - в противном случае.
СМ. ТАКЖЕ
, , .
НАЗВАНИЕ
getgrent, getgrgid, getgrnam, setgrent, endgrent, fgetgrent - получение информации из файла групп
СИНТАКСИС
#include <grp.h>
struct group *getgrent ( )
struct group *getgrgid (gid) int gid;
struct group *getgrnam (name) char *name;
void setgrent ( )
void endgrent ( )
struct group *fgetgrent (f) FILE *f;
ОПИСАНИЕ
Каждая из функций getgrent, getgrgid и getgrnam возвращает указатель на структуру, содержащую отдельные поля из строки файла /etc/group. Эта структура описана во включаемом файле :
struct group { char *gr_name; /* Имя группы */ char *gr_passwd; /* Зашифрованный пароль группы */ int gr_gid; /* Числовой идентификатор группы */ char **gr_mem; /* Вектор указателей на имена членов группы */ };
При первом обращении к функции getgrent возвращается указатель на структуру, содержащую данные из первой строки файла групп. При каждом следующем обращении возвращается указатель на структуру, содержащую данные из следующей строки файла. Таким образом, эта функция может использоваться для поиска нужной информации в файле /etc/group.
Функция getgrgid просматривает строки файла групп, начиная с первой, до тех пор, пока не будет найдена группа, числовой идентификатор которой совпадает с аргументом gid. Результатом функции является указатель на структуру с информацией об этой группе.
Функция getgrnam производит поиск группы с именем, совпадающим с аргументом name, и возвращает указатель на структуру с информацией об этой группе. Если во время чтения будет достигнут конец файла или будет обнаружена ошибка, то перечисленные функции возвращают пустой указатель NULL.
Функция setgrent служит для позиционирования на начало файла групп, чтобы можно было осуществить повторный просмотр.
Функция endgrent используется для закрытия файла /etc/ group по окончании обработки.
Функция fgetgrent действует аналогично getgrent, но информация выбирается не из файла /etc/group, а из потока ввода f, содержимое которого имеет формат файла групп.
ФАЙЛЫ
/etc/group
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
В случае ошибки или достижения конца файла описанные функции возвращают NULL.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции используют стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод.
ОГРАНИЧЕНИЯ
Значения, возвращаемые описанными функциями, указывают на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова. Поэтому, если необходимо сохранить полученную с помощью функций информацию, следует скопировать ее.
НАЗВАНИЕ
getpwent, getpwuid, getpwnam, setpwent, endpwent, fgetpwent - получение элементов файла паролей
СИНТАКСИС
#include <pwd.h>
struct passwd *getpwent ( )
struct passwd *getpwuid (uid) int uid;
struct passwd *getpwnam (name) char *name;
void setpwent ( )
void endpwent ( )
struct passwd *fgetpwent (f) FILE *f;
ОПИСАНИЕ
Каждая из функций getpwent, getpwuid и getpwnam возвращает указатель на структуру типа passwd, содержащую разложенную на поля строку файла паролей /etc/passwd. Структура описана во включаемом файле <pwd.h>:
struct passwd { char *pw_name; char *pw_passwd; int pw_uid; int pw_gid; char *pw_age; char *pw_comment; char *pw_gecos; char *pw_dir; char *pw_shell; };
По поводу смысла полей структуры см. .
При первом вызове функция getpwent возвращает указатель на первую структуру типа passwd в файле; при следующем вызове возвращается указатель на следующую структуру; поэтому последовательные вызовы функции можно использовать для просмотра всего файла. Функция getpwuid ищет с начала файла строку, содержащую заданный идентификатор пользователя uid, и возвращает указатель на структуру, соответствующую искомой строке. Функция getpwnam ищет с начала файла строку, содержащую специфицированное входное имя name и возвращает указатель на соответствующую структуру. В случае неудачного поиска (в том числе из за ошибки чтения) описанные функции возвращают пустой указатель NULL.
Вызов функции setpwent приводит к переустановке указателя чтения на начало файла паролей, то есть после этого вызова можно снова повторить просмотр всего файла. Функция endpwent служит для закрытия файла паролей.
Функция fgetpwent возвращает указатель на очередную структуру типа passwd в потоке f, удовлетворяющем формату файла /etc/passwd.
ФАЙЛЫ
/etc/passwd
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
В случае неудачного поиска (в том числе из за ошибки чтения) возвращается пустой указатель NULL.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции используют стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод.
ОГРАНИЧЕНИЯ
Значения, возвращаемые описанными функциями, указывают на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова. Поэтому, если необходимо сохранить полученную с помощью функций информацию, следует скопировать ее.
НАЗВАНИЕ
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.
НАЗВАНИЕ
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 - число сообщений в массиве; это значение следует проверять, поскольку новые коды ошибок могут быть добавлены в систему без соответствующей коррекции сообщений.
СМ. ТАКЖЕ
.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
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 игнорируется. Символ, обозначающий тип преобразования.
НАЗВАНИЕ
rand, srand - простой генератор случайных чисел
СИНТАКСИС
int rand ( )
void srand (seed) unsigned seed;
ОПИСАНИЕ
Функция rand, использующая мультипликативный конгруэнтный генератор случайных чисел с периодом 2^32, возвращает последовательно псевдослучайные числа в диапазоне от 0 до 2^15-1.
Функция srand может быть вызвана в любой момент, чтобы задать для генератора случайных чисел новое случайное начальное значение. При первом вызове в качестве такового генератор использует значение 1.
ПРИМЕЧАНИЯ
Спектральные свойства функции rand оставляют желать лучшего. Функция представляет собой гораздо более качественный, хотя и более сложный генератор случайных чисел.
СМ. ТАКЖЕ
.
НАЗВАНИЕ
sact - выдача информации о редактируемых версиях SCCS-файла
СИНТАКСИС
sact файл ...
ОПИСАНИЕ
Команда sact выдает информацию о невыполненных командах delta для указанного SCCS-файла. Такая ситуация возникает, если для файла была сделана команда get -e без последующего выполнения delta. Если указано имя каталога, sact обрабатывает все файлы в этом каталоге, начинающиеся с s.; файлы, к которым нет доступа на чтение, игнорируются без дополнительных сообщений. Если указано имя -, происходит чтение со стандартного ввода; каждая строка при этом трактуется как имя SCCS-файла, подлежащего обработке.
Выдаваемая для каждого файла информация состоит из пяти полей, разделенных пробелами:
С_идентификатор существующей версии, в которой будут сделаны изменения, создающие новую версию. С_идентификатор новой версии, которая будет создана. Входное имя пользователя, который создаст новую версию (то есть того, кто выполнил get -e). Дата выполнения get -e. Время выполнения get -e.
СМ. ТАКЖЕ
, , , .
ДИАГНОСТИКА
Для раз яснений пользуйтесь командой .
НАЗВАНИЕ
sag - график функционирования системы
СИНТАКСИС
sag [-s время] [-e время] [-i сек] [-f файл] [-T терминал] [-x спецификация_оси] [-y спецификация_оси]
ОПИСАНИЕ
Команда sag графически отображает функционирование системы на основании данных, накопленных в двоичном файле командой . Данные различных видов могут отображаться как по отдельности, так и в любой комбинации. Могут быть выведены простые арифметические комбинации данных. Команда sag вызывает sar и находит необходимые данные, производя сопоставления с заголовками столбцов (запустите sar, чтобы увидеть,что имеется в Вашем распоряжении). Опции -s, -e, -i, -f просто передаются команде sar. Смысл остальных опций:
-T терминал
Настройка на конкретный тип терминала. См. по поводу поддерживаемых типов терминалов. Если эта опция отсутствует, используется значение $TERM.
-x спецификация_оси
Спецификация информации, соответствующей оси x. Имеет вид имя [операция имя] ... [нижняя_граница верхняя_граница].
-y спецификация_оси [; спецификация_оси] ...
Спецификация информации, соответствующей оси y. Имеет тот же вид.
Имя есть либо заголовок колонки в результатах sar, за которым может в квадратных скобках следовать имя устройства, либо целое число. Операция есть +, -, * или /; обрамляется пробелами. Отметим, что если в спецификации есть символы, интерпретируемые shell'ом, их нужно экранировать. В спецификации могут участвовать не более пяти имен. Круглые скобки игнорируются. В отличие от привычного порядка в sag + и - выполняются раньше, чем * и /. Операции одного приоритета выполняются слева направо. Если нижняя и верхняя граница не заданы, они вычисляются по исходным данным.
Если не задана спецификация оси x, используется время. Для оси y допускается до пяти спецификаций, разделенных символом ;. По умолчанию спецификация оси y имеет вид
"%usr 0 100;%usr + %sys 0 100;%usr + %sys + %wio 0 100"
ПРИМЕРЫ
Посмотреть сегодняшнее использование процессора:
sag
Посмотреть использование всех дисков на протяжении 15 минут:
TS=`date +%H:%M` sar -o tempfile 60 15 TE=`date +%H:%M` sag -f tempfile -s $TS -e $TE -y "r+w/s[dsk]"
СМ. ТАКЖЕ
, .
НАЗВАНИЕ
sar - информация о функционировании системы
СИНТАКСИС
sar [-u] [-b] [-d] [-y] [-c] [-w] [-a] [-q] [-v] [-m] [-A] сек [число_интервалов] [-o файл] sar [-u] [-b] [-d] [-y] [-c] [-w] [-a] [-q] [-v] [-m] [-A] [-o файл] [-f файл] [-s время] [-e время] [-i сек]
ОПИСАНИЕ
Есть два способа использования команды sar. При первом способе sar опрашивает и накапливает счетчики активности операционной системы на заданном числе_интервалов, каждый из которых длится заданное число секунд. По умолчанию число_интервалов равно 1. При втором способе (когда не указан интервал опроса сек) sar выбирает данные из файла, куда они предварительно должны быть записаны. Этот файл либо указывается явно опцией -f, либо, по умолчанию, используется стандартный ежедневный протокол /usr/adm/sa/saдд для текущего дня дд.
Смысл опций команды sar:
-o файл
Задается файл, в котором сохраняются результаты работы команды sar; результаты записываются в двоичном виде.
-f файл
Файл, в который данные были записаны ранее командой sar. На основании этих данных выдаются результаты.
-s время
Время начала интересующего интервала; имеет формат чч[:мм[:сс]].
-e время
Время окончания интересующего интервала; имеет тот же формат.
-i сек
Выбираются записи с интервалом сек, иначе используются все интервалы, находящиеся в файле.
При обоих способах использования команды sar нужные счетчики активности выбираются следующими опциями:
%usr, %sys, %wio, %idle - время ЦП в режиме пользователя, в режиме системы, ожидание блочного ввода/вывода для какого-либо процесса, ожидание по другим причинам.
bread/s, bwrit/s - количество передач в секунду между системными буферами и дисками или другими блочными устройствами;
lread/s, lwrit/s - количество обращений к системным буферам;
%rcache, %wcache - процент попадания в кэш, соответственно (1-bread/lread)*100% и (1-bwrit/lwrit)*100%
pread/s, pwrit/s - количество небуферизованых передач.
%busy, avque - время занятости устройства, средняя длина очереди обращений к устройству в это время;
r+w/s, blks/s - количество передач данных на устройство и с него, количество переданных блоков;
avwait, avserv - среднее время (мс) ожидания в очереди к устройству, среднее время обслуживания запроса устройством (для диска, например, это время установки головок на дорожку, поиска нужной записи и передачи данных).
rawch/s, canch/s, outch/s - скорость ввода символов, скорость канонической обработки символов, скорость вывода символов (в символах/сек);
rcvin/s, xmtin/s, mdmin/s - скорости приема, передачи и модемных прерываний (в символах/сек).
scall/s - системные вызовы всех типов в секунду
sread/s, swrit/s, fork/s, exec/s - соответствующие системные вызовы в секунду
rchar/s, wchar/s - число символов, переданных системными вызовами и в секунду.
swpin/s, swpot/s, bswin/s, bswot/s - количество передач и количество переданных блоков при откачке и подкачке процессов (включая начальную загрузку некоторых программ) в секунду;
pswch/s - переключение процессов в секунду.
runq-sz, %runocc - очередь готовых к выполнению процессов в памяти;
swpq-sz, %swpocc - очередь готовых к выполнению процессов, вытесненных из памяти.
text-sz, proc-sz, inod-sz, file-sz - число элементов/размер каждой страницы в момент опроса;
text-ov, proc-ov, inod-ov, file-ov - переполнения между моментами опроса.
ПРИМЕРЫ
Сегодняшняя загрузка ЦП:
sar
10 минут измерять загрузку ЦП, сохранив результаты в файле temp:
sar -o temp 60 10
Анализ данных об использовании дисков и магнитофонов (если данные накоплены в файле temp):
sar -d -f temp
ФАЙЛЫ
/usr/adm/sa/saдд Ежедневный протокол, где дд - номер дня в месяце.
СМ. ТАКЖЕ
.
, в Справочнике программиста.
в Справочнике администратора.
НАЗВАНИЕ
sar: sa1, sa2, sadc - получение информации о функционировании системы
СИНТАКСИС
/usr/lib/sa/sadc [сек число] [вых_файл] /usr/lib/sa/sa1 [сек число] /usr/lib/sa/sa2 [-u] [-b] [-d] [-y] [-c] [-w] [-a] [-q] [-v] [-m] [-A] [-s время] [-e время] [-i сек]
ОПИСАНИЕ
Информацию о функционировании системы можно получать по специальному запросу пользователя [см. ] или автоматически, с помощью описанных ниже программ. Операционная система имеет набор счетчиков, которые увеличиваются при выполнении некоторых системных действий. Учитывается использование ЦП и буферов, ввод/вывод на ленту и диск, на терминалы, переключение между процессами, выполнение системных вызовов, доступ к файлам, работа с очередями, взаимодействие между процессами, работа с виртуальными страницами и удаленными ресурсами.
Утилита sadc и shell-процедуры sa1 и sa2 используются для сбора, сохранения и обработки этих данных.
Утилита sadc, сборщик данных, собирает системную информацию заданное число раз через указанное количество секунд и записывает ее в двоичном виде в вых_файл или на стандартный вывод. Если аргументы сек и число опущены, выводится запись специального вида. Эта возможность используется при загрузке системы, чтобы отметить момент, когда все счетчики сбрасываются в 0. Следующая команда из файла /etc/init.d/perf
su sys -c "/usr/lib/sa/sadc /usr/adm/sa/sa`date +%d`"
записывает в ежедневный протокол специальную запись, отмечающую перезапуск системы.
Shell-процедура sa1, вариант sadc, используется для сбора и сохранения данных в двоичном виде в файле /usr/adm/sa/saдд, где дд - это текущий день. Смысл аргументов сек и число тот же, что и в случае утилиты sadc, их подразумеваемые значения равны 1. Следующие строки из файла /usr/spool/cron/crontabs/sys [см. ]
0 * * * 0,6 /usr/lib/sa/sa1 20,40 8-17 * * 1-5 /usr/lib/sa/sa1
приводят к тому, что в рабочее время информация собирается каждые 20 минут, а в остальное время - один раз в час.
Shell-процедура sa2, вариант , записывает ежедневный отчет в файл /usr/adm/sa/sarдд. Смысл опций тот же, что и в случае . Следующая строка из файла /usr/spool/cron/crontabs/sys
НАЗВАНИЕ
saveto, copyto - сохранение тома или файловой структуры на диске или ленте
СИНТАКСИС
/etc/saveto [hd*] [mt] [fd*] [cpio] [опции_find]
ОПИСАНИЕ
Утилита saveto делает копию корневой файловой структуры или ее части на вспомогательный носитель. Копирование выполняется одним из следующих способов:
Утилита делает физическую копию устройства на другой диск или ленту. На другом диске с помощью создается файловая система, а затем утилита в сочетании с делает логическую копию. Комбинацией утилит cpio и find делается логическая копия на ленту. Комбинацией утилит cpio и логическая копия расщепляется на несколько дискет.
Из трех возможных устройств, на которые выполняется копирование (диск, лента или дискета) должно быть указано ровно одно.
Если утилита saveto используется для копирования на диск, то на этом диске инсталлируется UNIX и производится некоторая подготовительная работа, после которой с этого диска можно будет загружать систему. При использовании первого варианта будет копироваться используемая файловая система. Это, конечно, некорректное действие, и выполнять его следует только в однопользовательском режиме. Тем не менее, могут иметь место некоторые неприятности, а в суперблоке файловой системы флаг корректности всегда будет установлен в состояние "активна". Перед монтированием этой файловой системы она должна быть приведена в корректное состояние командой .
При указании опций_find они передаются команде find, за счет чего выполняется выборочное логическое копирование. Если опции_find не заданы, но нужно сделать логическую копию, в командной строке следует указать слово cpio. При этом скопируется некоторый подразумеваемый набор файлов. Утилита saveto написана на языке shell, так что сменить подразумеваемый набор несложно.
При копировании на дискету (fd*) всегда производится логическое копирование с расщеплением.
Утилита saveto выдает на стандартный вывод сообщение о начале копирования. Такое же сообщение записывается в файл /etc/savelog.
ПРИМЕРЫ
Быстрая копия всего диска:
/etc/saveto hd0s1
Копирование на магнитную ленту всех файлов из каталога /usr:
saveto mt usr
Копирование всех файлов, измененных после последнего выполнения saveto:
saveto fd / -newer /etc/savelog
ФАЙЛЫ
/etc/savelog
СМ. ТАКЖЕ
, , , , , .
, в Справочнике пользователя.
НАЗВАНИЕ
sbno - поиск описателя файла, содержащего блок с данным номером
СИНТАКСИС
sbno специальный_файл номер_блока
ОПИСАНИЕ
Команда sbno ищет в указанном специальном_файле описатель файла, содержащего блок с данным номером. Выдается (десятичный) номер описателя искомого файла. Номер_блока должен быть десятичным.
Отметим, что sbno работает только в файловых системах версии 5.
СМ. ТАКЖЕ
.
НАЗВАНИЕ
sbrk, brk - pacпpeдeляeт пaмять в ceгмeнтe дaнныx
СИНТАКСИС
char *sbrk (incr) int incr;
int brk (addr) char *addr;
ОПИСАНИЕ
Sbrk и brk иcпoльзyютcя для динaмичecкoгo измeнeния paзмepa ceгмeнтa дaнныx тeкyщeгo пpoцecca; cм. . Измeнeниe paзмepa дeлaeтcя пyтeм ycтaнoвки для тeкyщeгo пpoцecca гpaницы ceгмeнтa дaнныx, т.e. aдpeca пepвoй ячeйки пaмяти, нaxoдящeйcя зa кoнцoм ceгмeнтa дaнныx пpoцecca. Paзмep ceгмeнтa yвeличивaeтcя, ecли гpaницa вoзpacтaeт.
Sbrk дoбaвляeт incr бaйтoв к знaчeнию гpaницы ceгмeнтa и cooтвeтcтвyющим oбpaзoм измeняeт выдeлeннoe ceгмeнтy мecтo. Incr мoжeт быть oтpицaтeлeн, чтo yмeньшaeт знaчeниe гpaницы и paзмep ceгмeнтa.
B cлyчae бoльшoй мoдeли пaмяти для 286 пpoцeccopa, ecли incr бoльшe чиcлa бaйтoв, ocтaвшиxcя дo кoнцa ceгмeнтa, sbrk aвтoмaтичecки paзмeщaeт тpeбyeмыe бaйты в нoвoм ceгмeнтe дaнныx. Teм caмым гapaнтиpyeтcя пpинaдлeжнocть зaпpoшeнныx бaйтoв oднoмy ceгмeнтy. Ecли incr oтpицaтeлeн и eгo aбcoлютнoe знaчeниe paвнo длинe тeкyщeгo ceгмeнтa дaнныx, ceгмeнт aвтoмaтичecки ocвoбoждaeтcя. Ecли incr oтpицaтeлeн и eгo aбcoлютнoe знaчeниe бoльшe длины тeкyщeгo ceгмeнтa, ceгмeнт ocвoбoждaeтcя и дoпoлнитeльныe бaйты yдaляютcя из пpeдыдyщeгo ceгмeнтa дaнныx. Пpeдыдyщим являeтcя ceгмeнт, coдepжaщий дaнныe, выдeлeнныe пocлeдним вызoвoм sbrk, нe oтнocящимcя к дaннoмy ceгмeнтy.
Sbrk aвapийнo зaвepшaeтcя и paзмep ceгмeнтa нe измeняeтcя, ecли выпoлняeтcя xoтя бы oднo из cлeдyющиx ycлoвий:
[ENOMEM] Зaпpoшeнo бoльшe пaмяти, чeм дoпycкaeт cиcтeмa (cм. ulimit(3)).
Пoпыткa ocвoбoдить пaмяти бoльшe, чeм ee былo y пpoцecca.
Пoпыткa ycтaнoвить гpaницy ceгмeнтa мeньшe пepвoнaчaльнoй. Пepвoнaчaльнaя гpaницa этo гpaницa в мoмeнт cтapтa пpoцecca плюc длинa paздeляeмыx дaнныx, кoтopыe были выдeлeны пocлe этoгo.
Brk ycтaнaвливaeт гpaницy ceгмeнтa paвнoй знaчeнию addr и cooтвeтcтвyющим oбpaзoм измeняeт выдeлeннoe ceгмeнтy мecтo. Brk зaвepшaeтcя c oшибкoй, ecли yкaзaнный aдpec зaдaeт нecyщecтвyющий ceгмeнт или пpeвышaeт дoпycтимый cиcтeмoй пpeдeл.
BOЗВPAЩAEМOE ЗНAЧEНИE
B cлyчae ycпeшнoгo зaвepшeния sbrk вoзвpaщaeт yкaзaтeль нa нaчaлo выдeлeннoгo мecтa, a brk вoзвpaщaeт 0. Инaчe вoзвpaщaeтcя знaчeниe -1 и в errno зaнocитcя кoд oшибки. B cлyчae бoльшoй мoдeли пaмяти sbrk coздaeт нoвый ceгмeнт дaнныx и вoзвpaщaeт eгo cтapтoвый aдpec.
СМ. ТАКЖЕ
ЗAМEЧAНИЯ
B cлyчae бoльшoй мoдeли пaмяти для 286 пpoцeccopa вызoв "sbrk(0)" нe oбязaтeльнo вoзвpaщaeт cтapтoвый aдpec cлeдyющeгo вызoвa sbrk. B чacтнocти, тaк бyдeт, ecли cлeдyющий вызoв coздaeт нoвый ceгмeнт дaнныx. Boзвpaщaeмoe вызoвoм "sbrk(0)" знaчeниe cлeдyeт иcпoльзoвaть для oпpeдeлния иcxoднoй гpaницы ceгмeнтa дaнныx.
НАЗВАНИЕ
scanf, fscanf, sscanf - ввод с преобразованием по формату
СИНТАКСИС
include <stdio.h>
nt scanf (format [, pointer] ...) har *format;
nt fscanf (stream, format [, pointer] ...) ILE *stream; har *format;
nt sscanf (s, format [, pointer] ...) har *s, *format;
ОПИСАНИЕ
Функция scanf читает данные из стандартного потока ввода stdin. Функция fscanf читает данные из потока ввода, заданного аргументом stream. Функция sscanf читает цепочку символов с адресом s. Каждая из перечисленных функций вводит символы, интерпретирует их в соответствии с форматом и записывает по указанным адресам. Аргументами функций являются: format - формат, управляющий преобразованием, и pointers - указатели на области памяти, куда следует помещать результаты преобразований. Если для заданного формата не хватает указателей, результат непредсказуем; если же указателей слишком много, лишние просто игнорируются.
Формат обычно содержит спецификаторы преобразований, которые задают способ интерпретации вводимых данных. В формате могут содержаться:
Пробельные символы (собственно пробел, табуляция, перевод строки, переход к новой странице), которые (за исключением двух описанных ниже случаев) вызывают чтение до следующего непробельного символа. Обычный символ (не %), который должен совпадать со следующим символом потока ввода. Спецификаторы преобразований, состоящие из символа %, необязательного символа подавления присваивания *, необязательного числа, задающего максимальную ширину поля в потоке ввода, необязательного символа l или h, указывающего размер переменной, получающей значение, а также кода преобразования.
Спецификатор задает способ преобразования текущего входного поля; результат присваивается переменной, на которую указывает соответствующий аргумент pointer, если не задано подавление присваивания. Подавление присваивания позволяет пропускать в потоке ввода отдельные поля. Поле в потоке ввода определяется как последовательность символов, не содержащая пробелов, которая либо ограничивается "неуместным" (в данном контексте) символом, либо определяется шириной, если она задана. Для всех преобразований, кроме [ и c, пробелы в начале поля игнорируются.
Код преобразования определяет способ интерпретации входного поля; соответствующий аргумент-указатель, как правило, должен иметь соответствующий тип. Для пропускаемых полей указатель не задается. Распознаются следующие коды преобразований:
Из потока ввода должно быть прочитано число с плавающей точкой; оно представляет собой последовательность цифр с необязательным знаком, необязательной десятичной точкой и необязательным порядком; порядок обозначается буквой e или E, за которой может следовать +, - или пробел, а затем - целое число. Соответствующий аргумент должен быть указателем на переменную типа float.
НАЗВАНИЕ
scc - компилятор C-программ, выполняемых без операционной системы
СИНТАКСИС
scc [+[библ]] [опция ...] [файл ...]
ОПИСАНИЕ
Команда scc подготавливает указанные файлы для выполнения без операционной системы. Синтаксис и семантика аргументов опция и файл те же, что и в команде ; однако опция -p (профилирование), а также любое обращение из объектного модуля к системным примитивам приводят к невозможности выполнения полученной программы в отсутствие операционной системы.
Команда scc определяет константу компилятора STANDALONE; за счет этого можно организовать условную компиляцию частей программы только для случая выполнения без операционной системы.
Первый аргумент указывает на дополнительную конфигурационную библиотеку, определяющую конфигурацию аппаратуры того компьютера, на котором будет выполняться программа. Библ используется только на компьютерах PDP-11 и может иметь следующие значения:
Если аргумент +библ не указан, подразумевается +A. Если указан только +, дополнительная конфигурационная библиотека не загружается, пользователь может использовать свою библиотеку.
ФАЙЛЫ
/lib/crt2.o Загрузчик программ, выполняемых без операционной системы. /usr/lib/lib2.a Библиотека для программ, выполняемых без операционной системы. /usr/lib/lib2A.a +A конфигурационная библиотека (только для PDP-11). /usr/lib/lib2B.a +B конфигурационная библиотека (только для PDP-11).
СМ. ТАКЖЕ
, .
a.out(4) в Справочнике программиста.
НАЗВАНИЕ
sccsdiff - сравнение двух версий в SCCS-файле
СИНТАКСИС
sccsdiff -rс_идентификатор1 -rс_идентификатор2 [-p] [-sразмер] файл ...
ОПИСАНИЕ
Команда sccsdiff сравнивает две версии в SCCS-файле и генерирует различия между ними. Может быть указано несколько SCCS-файлов, опции относятся ко всем файлам.
-rс_идентификатор1 -rс_идентификатор2
С_идентификатор1 и с_идентификатор2 определяют сравниваемые версии в SCCS-файле. Версии в указанном порядке передаются программе .
-p Отфильтровать вывод каждого файла через .
-sразмер Задается размер сегментов, которые bdiff передает команде . Этой опцией пользуются, если diff аварийно завершается из-за высокой загруженности системы.
ФАЙЛЫ
/tmp/get????? Временные файлы
СМ. ТАКЖЕ
, , , .
ДИАГНОСТИКА
файл: No differences
Означает, что версии полностью совпадают.
Для раз яснения других сообщений пользуйтесь командой .
НАЗВАНИЕ
schedule - база данных для автоматического системного резервного копирования.
ОПИСАНИЕ
База данных schedule используется совместно с для полу-автоматического системного резервного копирования. Для каждой файловой системы, подлежащей резервному копированию, задается циклический график уровней резервного копирования .
Этот циклический график (или цикл) представляет собой список уровней дампа (включая отсутствие такового) и указатель последнего выполненного элемента этого списка. Этот указатель регулярно передвигается на очередной элемент списка (при каждом запуске fsphoto, обычно раз в день), начиная сначала при завершении списка. Впрочем, это передвижение осуществляется только в случая успешного выполнения нужного дампа.
Каждая структура в этом файле занимает отдельную строку. Пустые строки и строки комментариев (начинающиеся с #) могут располагаться в любом месте. Распознаются некоторые ключевые слова:
site sitename Аргумент sitename передается команде fsave в качестве описания метки ленты. Обычно sitename - это название фирмы или номера здания. media drive k sizes... [format] Устройство drive - это дисковод гибких дисков, способный обслуживать диски перечисленных емкостей sizes (в килобайтах). Аргумент format, если он задан, - это команда системы UNIX, используемая для форматирования описанных дискет. media drive d density sizes... [format] Устройство drive - это стример, поддерживающий плотность записи density и способный обслуживать ленты указанных размеров sizes (в футах). Как и для дискет, format - это команда системы UNIX, используемая для форматирования описанных лент. [0-9] size savetime importance marker Описание каждого уровня резервного копирования, как это представлено в разделе . Установки по умолчанию таковы:
<
НАЗВАНИЕ
scnhdr - заголовок секции об ектного файла обычного формата
СИНТАКСИС
#include <scnhdr.h>
ОПИСАНИЕ
Любой об ектный файл обычного формата содержит таблицу заголовков секций, которая определяет расположение данных в файле. Каждая секция в об ектном файле имеет свой заголовок. Ниже приведена C-структура заголовка:
struct scnhdr { char s_name[8]; /* Имя секции */ long s_paddr; /* Физический адрес */ long s_vaddr; /* Виртуальный адрес */ long s_size; /* Размер секции */ long s_scnptr; /* Указатель на бесструк турные данные в файле */ long s_relptr; /* Указатель в файле на инф. о настр. ссылок */ long s_lnnoptr; /* Указатель в файле на инф. о номерах строк */ unsigned short s_nreloc; /* Число ссылок, требующих настройки */ unsigned short s_nlnno; /* Число элементов в таблице номеров строк */ long s_flags; /* Флаги */ };
Указатели в файле представляют собой смещение в байтах относительно начала файла; они могут быть использованы как смещения при использовании макроса FSEEK [см. ]. Если секция инициализирована, то файл содержит реальные данные. Неинициализированные секции несколько отличаются. Они имеют размер, имена, определенные в них, и ссылающиеся на них. Но они не содержат информации о настройке ссылок, номерах строк и данных. Следовательно, у неинициализированной секции нет бесструктурных данных в об ектном файле, и значения полей s_scnptr, s_relptr, s_lnnoptr, s_nreloc, и s_nlnno равны нулю.
СМ. ТАКЖЕ
, a.out(4).
в Справочнике пользователя.
НАЗВАНИЕ
src_dump - формат файла с образом экрана, создаваемого пакетом curses
СИНТАКСИС
scr_dump (file)
ОПИСАНИЕ
Функция scr_dump из пакета копирует содержимое экрана в файл. Формат этого файла описан ниже.
Имя терминала (tty-файла) имеет длину 20 символов; время модификации (относящееся к tty-файлу терминала, с экрана которого снят образ) имеет тип time_t; все остальные числа и символы имеют тип chtype [см. <curses.h>]. Поля переводами строк не разделяются.
магическое число: восьмеричное 0433 имя терминала время модификации число колонок число строк длина строки символы строки {для каждой строки экрана} длина строки символы строки .... есть метки? {1, если есть метки экрана} строка курсора колонка курсора
Сохраняется только то число символов строки, которое указано. Например, если длина строки равна 0, символов этой строки в файле не будет. Если значение есть метки? равно 1, затем следует
число меток ширина метки символы метки_1 символы метки_2 ...
СМ. ТАКЖЕ
.
НАЗВАНИЕ
screen - файлы tty[01-n], color, monochrome, ega, vga - адаптер дисплея и видеомонитор.
ОПИСАНИЕ
Файлы устройств tty[01-n] обоеспечивают символьный ввод/вывод между системой, дисплеем видеомонитора и клавиатурой. Каждый из этих файлов соответствует отдельному устройству телетайпа. Хотя количество экранов ограничивается 12, точное число (n) доступных экранов зависит от объема памяти компьютера. По умолчанию экраны устанавливаются в режим терминала ASCII 80x25.
Сообщения ядра системы об ошибках записываются в /dev/console, обычно соответствующему текущему экрану. Если по умолчанию для записи системных сообщений об ошибках установлено устройство вывода /dev/console, и используемый экран переключается в графический режим, то сообщения на консоли не высвечиваются. Когда видеоустройство возвращается в текстовый режим, то высвечивается соответствующее информационное сообщение, а текст сообщений об ошибках может быть восстановлен из файла /usr/adm/messages.
Хотя все устройства tty[01-n] могут быть открыты одновременно, только одно из них может быть активным в данный момент. Активное устройство формирует свой экран и перехватывает на себя управление клавиатурой. Будет ошибкой пытаться получить доступ к файлам color, monochrome или ega, если отсутствует соответствующий адаптер или нет связанного с ним экрана в многоэкранном режиме.
Для переключения на следующий экран введите код Ctrl-PrtSc с помощью клавиш Ctrl и PrtSc. Любой активный экран может быть выбран введением кода alt-Fn, где Fn - одна из функциональных клавиш. Например, F1 относится к устройству tty01.
Режимы управления
Для изменения режима дисплея видеомонитора откройте файл, соответствующий этому режиму. Например, для переключения выдачи на дисплей CGA программа должна открыть файл /dev/color и использовать отображение селектора ioctl s, возвращенного после вызова open (команды открытия), на файловый дескриптор. Применение файлов устройств поможет обеспечить программную совместимость в будущем.
Экраны могут быть назначены различным адаптерам (в многоадаптерных системах) с использованием следующих ioctl s:
НАЗВАНИЕ
scsi: hd*, fd*, mt - диск, дискета, магнитная лента
ОПИСАНИЕ
Описывается совокупность драйверов контроллера, обслуживающего устройства с интеллектуальным интерфейсом SCSI (накопители на магнитных дисках, ленте), а также до четырех приводов дискет, присоединенных непосредственно к контроллеру. Драйвер дисков дает возможность использовать до семи томов и до восьми логических дисков на каждом из томов.
Обработка ошибок, их коррекция и повторный запуск неудавшихся операций осуществляются контроллером. Сообщения об ошибках выдаются на системную консоль и передаются демону регистрации ошибок.
Параметры устройств описываются во включаемом файле <sys/io.h>. В поле тип диска находится основная конфигурационная информация. Каждый полубайт (4 бита) имеет специальное значение:
Подустройство SCSI-устройства. Номер первого сектора на диске (0 или 1). SCSI-идентификатор устройства (7 для приводов дискет). Собственно тип диска, означающий:
Заметим, что эти данные о томе носят только информационный характер и почти не имеют значения для драйвера. Если информация о разбиении на логические диски [строка HDLDEV в файле ] содержит l_AUTO, драйвер во время генерации системы выполнит автоконфигурацию, получив из файла <sys/io.h> размер носителя информации [см. ].
ФАЙЛЫ
/dev/dsk/hd* Диски как блочные устройства. /dev/rdsk/hd* Диски как бесструктурные устройства. /dev/dsk/fd* Дискеты как блочные устройства. /dev/rdsk/fd* Дискеты как бесструктурные устройства. /dev/mt Магнитная лента. /usr/include/sys/disk.h Информация о дисках. /usr/include/sys/io.h Конфигурационная информация.
СМ. ТАКЖЕ
.
в Справочнике программиста.
НАЗВАНИЕ
scsi - небольшой компьютерный интерфейс к периферийным устройствам.
ОПИСАНИЕ
SCSI обеспечивает стандартный интерфейс к периферийным устройствам, таким как жесткие диски, принтеры, стримеры и прочие. SCSI работает через плату главного адаптера, который может поддерживать до 8 контроллеров, каждый из которых поддерживает до 8 устройств. Заметьте, что к контроллеру можно присоединить только 4 жестких диска.
Схема формирования малых чисел для устройств SCSI (например, для жесткого диска) - та же самая, что и подобная схема для других устройств.
Каждый контроллер SCSI имеет свое собственное главное число устройства.
ПРИМЕЧАНИЯ
Эта утилита не применима ко всем конфигурациям аппаратных и программных средств и не может включаться в ваши дистрибуции.
В настоящий момент единственным главным адаптером SCSI, поддерживаемым в системе, является адаптер Adaptec AHA-1540, управляющий одним или двумя жесткими дисками и одним стримером.
СМ. ТАКЖЕ
hd(HW), tape(HW)
НАЗВАНИЕ
sdb - символьный отладчик
СИНТАКСИС
sdb [-W] [-w] [объектный_файл [образ_памяти [список_каталогов]]]
ОПИСАНИЕ
По команде sdb запускается символьный отладчик, предназначенный для отладки программ на языках C и Фортран 77. Его можно использовать для анализа объектных файлов и образа памяти, а также для выполнения программ под управлением пользователя.
объектный_файл - это файл с выполняемой программой, откомпилированной с опцией -g (отладка). Если она не была компилирована с опцией -g, возможности символьной отладки ограничиваются, но объектный_файл можно анализировать, равно как можно отлаживаться на уровне машинных команд и процедур. По умолчанию объектный_файл - a.out.
Образ_памяти - это файл с образом памяти, полученный после завершения выполнения объектного_файла. По умолчанию имя образа_памяти есть core. Образ_памяти не обязан присутствовать; знак - на его месте ведет к игнорированию образа.
Список_каталогов, в котором отдельные каталоги разделены двоеточием, используется для поиска файлов с исходными текстами отлаживаемой программы.
Команда sdb обрабатывает следующие опции:
В каждый момент времени определены текущая строка и текущий файл. Если образ_памяти существует и не игнорируется, то первоначально текущими становятся строка и файл с исходным текстом, содержащим последний выполнявшийся оператор. Если образа_памяти нет, текущими становятся первая строка процедуры main и соответствующий файл. Текущую строку и текущий файл можно изменить посредством команд анализа содержимого исходных файлов.
При отладке имена переменных пишутся точно так же, как в языках C или Фортран 77. Доступ к переменным, локальным для некоторой процедуры, осуществляется посредством конструкции процедура:переменная. Если имя процедуры не указано, используется процедура, содержащая текущую строку. Можно ссылаться на элемент структуры как на структура.элемент; или, посредством указателей, как на указатель->элемент; ссылка на элемент массива выглядит как массив[номер]. Переход от указателя к указуемому объекту записывается как указатель[0]. Допускаются комбинации этих конструкций. Доступ к переменным из общих блоков Фортрана осуществляется аналогично обращению к элементам структур с заменой имени структуры на имя общего блока. Переменные из непоименованного общего блока записываются в виде .переменная.
Можно также указывать переменную, задав ее адрес. Допускается использование всех видов целых констант, принятых в языке C, так что адреса могут задаваться в десятичном, восьмеричном и шестнадцатеричном виде.
Если адрес указан на месте имени структурной переменной, то шаблоном структуры будет шаблон последней из структур, к которой выполнялся доступ посредством sdb. Вообще, sdb рассматривает структуру как набор переменных; при указании имени структуры выводятся все ее элементы. Исключение составляет вывод адресов: выводится адрес начала структуры, а не отдельных ее элементов.
Элементы многомерных массивов записываются в виде массив[номер][номер]..., или массив[номер,номер,...]. На месте номера может употребляться также конструкция номер;номер, задающая диапазон изменения индекса ("вырезку" из массива); * обозначает весь допустимый диапазон данного индекса. Если символы * являются последними в списке индексов, их можно опустить. При выдаче адресов, как и в случае структур, сообщается адрес всего массива или вырезки, но не адрес каждого из элементов. Многомерные массивы-аргументы подпрограмм на языке Фортран 77 не могут быть выведены как массивы, так как они являются указателями, значения которых есть адреса массивов. Сам массив может быть получен в символическом виде из вызывающей функции. Кроме того, следует учитывать, что sdb отсчитывает индексы от нуля.
Ссылка на конкретный экземпляр переменной из стека делается в виде процедура:переменная,номер. При этом могут использоваться все описанные ранее способы доступа к элементам структур и массивов. Номер - это номер появления процедуры в стеке, считая ближайший к вершине экземпляр первым. Если процедура не указана, используется та, что выполняется в данный момент.
Номера строк в исходном тексте задаются в виде имя_файла:номер или процедура:номер. В обоих случаях номер отсчитывается от начала файла. По умолчанию используется текущий файл. Если не указан номер строки, то используется первая строка файла или процедуры.
Можно оперировать не только со строками исходного текста, но и с адресами, используя конструкцию адрес:.
Пока под управлением sdb выполняется процесс (см. ниже команды r и k), все адреса относятся к программе процесса; в другие моменты они относятся к объектному_файлу или образу_памяти.
Адресация в файле
ИМЯ
sddate - Печатает и назначает даты резервирования.
СИНТАКСИС
sddate[ name lev date ]
ОПИСАНИЕ
Если параметр отсутствует, печатается содержимое файла даты резервирования /etc/ddate. Файл даты резервирования обслуживается командой и содержит самую последнюю дату резервирования каждого уровня резервирования для каждой файловой системы.
Если аргументы заданы, вход замещается или формируется в файле /etc/ddate. Аргумент name(имя) - это последняя компонента имени пути к устройству, аргумент lev - это номер уровня резервирования (от 0 до 9) и аргумент date - это время в форме, соответствующей команде :
mmddhhmm[yy],
где первые две буквы mm - это две цифры номера месяца в диапазоне от 01-12, две буквы dd - это две цифры порядкового номера дня в месяце, две буквы hh соответствуют двум цифрам часа в военном формате от 00 - 23 и последние две буквы mm соответствуют двум цифрам минут в диапазоне от 00 - 59. Две цифры года yy необязательны, предполагается что это смещение от 1900 года, т.е. 19yy.
Иногда возникает желание зарезервировать файловые системы с помощью дословного их копирования в среду резервирования. Команда sddate может быть использована для формирования входа "уровня 0" в /etc/ddate, который затем позволит дополнительно расширить возможности резервирования. Например команда:
sddate rhd0 5 10081520
формирует вход /etc/ddate, показывая резервирования уровня 5 /dev/rhd0 8 октября в 15часов 20 минут.
ФАЙЛЫ
/etc/ddate
СМ. ТАКЖЕ
, ,
ДИАГНОСТИКА
bad conversion - Если дата установлена синтаксически некорректно.
ИМЯ
sdenter, sdleave - cинxpoнизиpyeт дocтyп к paздeляeмым ceгмeнтaм дaнныx
СИНТАКСИС
#include <sys/sd.h>
int sdenter (addr, flags) char *addr; int flags;
int sdleave (addr) char *addr;
ОПИСАНИЕ
Sdenter иcпoльзyeтcя пpи пoпыткe тeкyщeгo пpoцecca пoлyчить дocтyп к coдepжимoмy paздeляeмoгo ceгмeнтa дaнныx. Apгyмeнт addr paвeн знaчeнию, вoзвpaщeннoмy пpeдыдyщим вызoвoм . Bыпoлняeмoe дeйcтвиe oпpeдeляeтcя apгyмeнтoм flags, кoтopый cтpoитcя лoгичecкoй cлoжeниeм cлeдyющиx флaгoв:
SD_NOWAIT Ecли дpyгoй пpoцecc yжe cдeлaл вызoв sdenter пo oтнoшeнию к этoмy ceгмeнтy дaнныx, нo нe cдeлaл cooтвeтcтвyющий sdleave c флaгoм SD_UNLOCK, пpoцecc нe ждeт ocвoбoждeния ceгмeнтa и фикcиpyeтcя oшибкa ENAVAIL.
SD_WRITE Укaзывaeт, чтo пpoцecc coбиpaeтcя дeлaть зaпиcь в paздeляeмый ceгмeнт дaнныx. Пpoцecc, пpиcoeдинивший paздeляeмый ceгмeнт дaнныx c ycтaнoвлeнным флaгoм SD_RDONLY, нe мoжeт выпoлнять sdenter c флaгoм SD_WRITE.
Sdleave иcпoльзyeтcя для yкaзaния тoгo, чтo тeкyщий пpoцecc зaкoнчил мoдификaцию coдepжимoгo paздeляeмoгo ceгмeнтa дaнныx.
Moдификaции paздeляeмoгo ceгмeнтa дaнныx, cдeлaнныe мeждy вызoвaми sdenter и sdleave, выпoлняютcя кoppeктнo и мoгyт быть yчтeны дpyгими пpoцeccaми. He peкoмeндyeтcя нaдoлгo ocтaвлять ceгмeнт пoд дeйcтвиeм вызoвa sdenter: кaк тoлькo зaвepшeнa тeкyщaя paбoтa c ceгмeнтoм, вызывaть sdleave. B чacтнocти, нe peкoмeндyeтcя мeждy sdenter и sdleave выпoлнять cиcтeмныe вызoвы.
Ecли ceгмeнт был coздaн бeз флaгa SD_UNLOCK, мeждy sdenter и sdleave зaпpeщeн cиcтeмный вызoв fork.
Boзвpaщaeмoe знaчeниe
B cлyчae ycпeшнoгo зaвepшeния вoзвpaщaeтcя знaчeниe 0. Инaчe вoзвpaщaeтcя знaчeниe -1 и в errno зaнocитcя кoд oшибки. Oшибкa EINVAL oзнaчaeт, чтo пpoцecc вызвaл sdenter c флaгoм SD_WRITE, a ceгмeнт yжe пpиcoeдинeн дpyгим пpoцeccoм c флaгoм SD_RDONLY. Oшибкa ENAVAIL oзнaчaeт, чтo в sdenter yкaзaн флaг SD_NOWAIT, a paздeляeмый ceгмeнт нe cвoбoдeн.
СМ. ТАКЖЕ
,
ЗAМEЧAНИЯ
Эти cpeдcтвa cпeцифичны для XENIX и мoгyт oтcyтcтвoвaть в дpyгиx peaлизaцияx UNIX. Пpoгpaммы, иcпoльзyющиe эти фyнкции, дoлжны кoмпoнoвaтьcя c флaгoм -lx.
ИМЯ
sdget, sdfree - пpиcoeдиняeт и oтcoeдиняeт paздeляeмый ceгмeнт дaнныx
СИНТАКСИС
#include <sys/sd.h>
char *sdget (path, flags, size[, mode]) char *path; int flags, mode; long size;
int sdfree (addr) char *addr;
ОПИСАНИЕ
Sdget пpиcoeдиняeт paздeляeмый ceгмeнт дaнныx к пpocтpaнcтвy дaнныx тeкyщeгo пpoцecca. Ceгмeнт зaдaeтcя имeнeм path. Bыпoлняeмыe дeйcтвия oпpeдeляютcя apгyмeнтoм flags, кoтopый cтpoитcя лoгичecким cлoжeниeм cлeдyющиx флaгoв:
SD_RDONLY Пpиcoeдинить ceгмeнт тoлькo для чтeния.
SD_WRITE Пpиcoeдинить ceгмeнт для чтeния и зaпиcи.
SD_CREAT Ecли ceгмeнт cyщecтвyeт и нe иcпoльзyeтcя (нeaктивeн), дeйcтвиe эквивaлeнтнo coздaнию пycтoгo ceгмeнтa. Инaчe ceгмeнт coздaeтcя в cooтвeтcтвии c size и mode. Знaчeниe mode зaдaeт пpaвa дpyгиx пpoцeccoв пo чтeнию и зaпиcи этoгo ceгмeнтa. Дoпycтимы фyнкции, пpимeняeмыe к oбычным фaйлaм. Пpaвo выпoлнeния ceгмeнтa лишeнo cмыcлa. Пocлe coздaния ceгмeнт инициaлизиpyeтcя нyлями.
SD_UNLOCK Hecкoлькo пpoцeccoв мoгyт имeть дocтyп к ceгмeнтy мeждy sdenter и sdleave.
Sdfree oтcoeдиняeт paздeляeмый ceгмeнт дaнныx oт тeкyщeгo пpoцecca. Ceгмeнт зaдaeтcя aдpecoм пpиcoeдинeния addr. Ecли тeкyщий пpoцecc cдeлaл paнee вызoв sdenter, нo нe cдeлaл sdleave, пepeд oтcoeдинeниeм ceгмeнтa aвтoмaтичecки выпoлняeтcя sdleave.
Koгдa нe ocтaeтcя бoльшe пpoцeccoв, пpиcoeдинившиx дaнный ceгмeнт, coдepжимoe ceгмeнтa пepecтaeт cyщecтвoвaть и ни oдин пpoцecc нe мoжeт пpиcoeдинить ceгмeнт бeз coздaния eгo пocpeдcтвoм sdget c флaгoм SD_CREAT. B errno зaнocитcя кoд oшибки EEXIST, ecли пpoцecc пытaeтcя coздaть paздeляeмый ceгмeнт дaнныx, кoтopый yжe cyщecтвyeт и иcпoльзyeтcя. B errno зaнocитcя кoд oшибки ENOTNAM, ecли пpoцecc пpимeняeт sdget к фaйлy, кoтopый cyщecтвyeт, нo нe имeeт тип paздeляeмыx дaнныx.
ЗAМEЧAНИЯ
Иcпoльзoвaниe флaгa SD_UNLOCK имeeт cмыcл в cиcтeмe c cooтвeтcтвyющeй aппapaтнoй пoддepжкoй.
B cлyчae 286 пpoцeccopa sdget и дpyгиe oпepaции c paздeляeмыми ceгмeнтaми дaнныx cлeдyeт пpимeнять тoлькo для бoльшoй мoдeли пaмяти. Пpoгpoaммы c мaлoй и cpeднeй мoдeлями, пытaющиecя иcпoльзoвaть paздeляeмыe ceгмeнты дaнныx, нaтaлкивaютcя нa нexвaткy пaмяти. Aппapaтypa 286 пpoцeccopa нe пoзвoляeт в cлyчae мaлoй мoдeли peaлизoвaть paздeляeмыe ceгмeнты дaнныx, пpeднaзнaчeнныe тoлькo для чтeния. Oднaкo, тaкиe ceгмeнты peaлизyютcя в бoльшoй мoдeли.
B cлyчae 386 пpoцeccopa aдpecнoe пpocтpaнcтвo 32-битoвoe и paздeляeмыe ceгмeнты дaнныx мoгyт иcпoльзoвaтьcя бeз oгpaничeний, cвoйcтвeнныx 286 пpoцeccopy.
sdget aвтoмaтичecки yвeличивaeт гpaницy ceгмeнтa дaнныx, ycтaнaвливaя ee cpaзy пocлe paздeляeмoгo ceгмeнтa дaнныx. Этo вoздeйcтвyeт нa пocлeдyющиe вызoвы sbrk и brk, кoтopыe пытaютcя вoccтaнoвить пpeжнюю гpaницy. B чacтнocти, пoпыткa вoccтaнoвить гpaницy, кoтopaя былa дo вызoвa sdget, пpивoдит к oшибкe.
Эти cpeдcтвa cпeцифичны для XENIX и мoгyт oтcyтcтвoвaть в дpyгиx peaлизaцияx UNIX. Пpoгpaммы, иcпoльзyющиe эти фyнкции, дoлжны кoмпoнoвaтьcя c флaгoм -lx.
Boзвpaщaeмoe знaчeниe
ИМЯ
sdgetv, sdwaitv - cинxpoнизиpyeт дocтyп к paздeляeмым дaнным
СИНТАКСИС
#include <sys/sd.h>
int sdgetv (addr) char *addr;
int sdwaitv (addr, vnum) char *addr; int vnum;
ОПИСАНИЕ
Sdgetv и sdwaitv мoгyт иcпoльзoвaтьcя взaимoдeйcтвyющими пpoцeccaми пpи дocтyпe к paздeляeмым ceгмeнтaм дaнныx. Oбe фyнкции вoзвpaщaют нoмep вepcии paздeляeмoгo ceгмeнтa дaнныx, пpиcoeдинeннoгo пpoцeccoм пo aдpecy addr. Hoмep вepcии ceгмeнтa измeняeтcя вcякий paз, кoгдa кaкoй-либo пpoцecc выпoлняeт sdleave для этoгo ceгмeнтa.
Sdgetv пpocтo вoзвpaщaeт нoмep вepcии ceгмeнтa.
Sdwaitv пepeвoдит тeкyщий пpoцecc в oжидaниe, пoкa нoмep вepcии yкaзaннoгo ceгмeнтa нe cтaнeт paвным vnum.
Boзвpaщaeмoe знaчeниe
B cлyчae ycпeшнoгo зaвepшeния sdgetv и sdwaitv вoзвpaщaют пoлoжитeльнoe цeлoe чиcлo, являющeecя тeкyщим нoмepoм вepcии yкaзaннoгo paздeляeмoгo ceгмeнтa дaнныx. Инaчe вoзвpaщaeтcя знaчeниe -1 и в errno зaнocитcя кoд oшибки.
СМ. ТАКЖЕ
,
ЗAМEЧAНИЯ
Пpoгpaммы, иcпoльзyющиe эти фyнкции, дoлжны кoмпoнoвaтьcя c флaгoм -lx.
НАЗВАНИЕ
sdiff - распечатка несоответствий в файлах в виде таблицы построчного сравнения
СИНТАКСИС
sdiff [-w ширина] [-l] [-s] [-o вых_файл] файл1 файл2
ОПИСАНИЕ
Команда sdiff использует результат работы утилиты для того, чтобы сформировать листинг построчного сравнения двух файлов. Каждая строка листинга содержит: либо пару строк исходных файлов, разделенных пробелами в случае совпадения или знаком | в случае несовпадения; либо строку файла1 с пометкой < при ее отсутствии в файле2; либо соответственно строку файла2 с пометкой >. Пример:
x | y a a b < c < d d > c z z
Допускаются следующие опции:
-w ширина
Установить ширину выдачи. По умолчанию ширина равна 130 символам.
-l Для каждой пары одинаковых строк печатать только левую часть вывода.
-s Не печатать одинаковые строки.
-o вых_файл
Использовать вых_файл, как имя третьего файла, в который под управлением пользователя выполняется слияние двух исходных файлов. Одинаковые строки из файла1 и файла2 копируются в вых_файл автоматически. Блок отличий (одного и того же характера - то есть различающиеся строки; строки, имеющиеся только в файле1; строки имеющиеся только в файле2) выводится пользователю и сопровождается приглашением %, в ответ на которое должна последовать одна из команд:
При выходе из редактора результирующий файл присоединяется к концу вых_файла.
СМ. ТАКЖЕ
, .
НАЗВАНИЕ
sed - пакетный редактор
СИНТАКСИС
sed [-n] [-e сценарий] [-f с_файл] ... [файл ...]
ОПИСАНИЕ
Sed копирует указанные файлы (по умолчанию - стандартный ввод), на стандартный вывод, редактируя их в соответствии с командами сценария. Опция -f приводит к тому, что сценарий берется из с_файла, этих опций может быть несколько. Если присутствует только опция -e, а опции -f отсутствуют, флаг -e можно опустить. Опция -n подавляет вывод, выполняемый по умолчанию. Сценарий состоит из редактирующих команд (каждая на отдельной строке), имеющих следующий формат:
[адрес [, адрес]] функция [аргумент ...]
В нормальном режиме sed циклически выполняет следующие действия:
Копирует входную строку в буфер (в случае, если там ничего не осталось от предыдущей команды D). Применяет к буферу последовательно все команды сценария, адреса в которых позволяют их применить. Копирует буфер на стандартный вывод (если не указана опция -n) и очищает буфер.
Некоторые команды используют хранилище, чтобы запомнить весь буфер или его часть для последующего использования.
Адрес - это либо десятичное число, означающее номер входной строки в совокупности входных файлов, либо $, означающий последнюю входную строку, либо контекстный адрес, то есть /регулярное_выражение/ в стиле редактора со следующими модификациями:
В контекстном адресе конструкция \?регулярное_выражение?, где ? - любой символ, эквивалентна конструкции /регулярное_выражение/. Например, в контекстном адресе \xabc\xdefx второй x означает сам себя, поэтому значением выражения является abcxdef. Управляющая последовательность \n соответствует символу перевода строки, который включается в буфер. Точка . соответствует любому символу, кроме последнего перевода строки в буфере. Командная строка без адреса применима к любому буферу. Командная строка с одним адресом применима к буферу с соответствующим адресом. Командная строка с двумя адресами применима к буферам с адресами в диапазоне от первого до второго включительно (если второй адрес является числом, которое не превосходит номера строки, выбранной первой, обрабатывается только одна строка). Затем процесс повторяется, начиная с первого адреса.
НАЗВАНИЕ
semctl - операции управления семафорами
СИНТАКСИС
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>
int semctl (semid, semnum, cmd, arg) int semid, cmd; int semnum; union semun { int val; struct semid_ds *buf; ushort *array; } arg;
ОПИСАНИЕ
Системный вызов semctl позволяет выполнять операции управления семафорами. Семафоры задаются аргументами semid и semnum. Операция определяется значением аргумента cmd, которое должно быть одним из следующих:
GETVAL Получить значение семафора semval [см. ]. {Требуется право на чтение.} SETVAL Установить значение семафора semval равным arg.val. {Требуется право на изменение.} После успешного выполнения этой команды значение semadj, соответствующее заданному семафору во всех процессах, устанавливается равным 0. GETPID Получить значение sempid. {Требуется право на чтение.} GETNCNT Получить значение semncnt. {Требуется право на чтение.} GETZCNT Получить значение semzcnt. {Требуется право на чтение.}
Следующие команды cmd читают и устанавливают значение каждого семафора в множестве семафоров:
GETALL Прочитать значения семафоров в массив, на который указывает arg.array. {Требуется право на чтение.} SETALL Установить значения семафоров равными значениям элементов массива, на который указывает arg.array. {Требуется право на изменение.} После успешного выполнения этой команды значения semadj, соответствующие заданным семафорам во всех процессах, устанавливаются равными 0.
Предоставляются также следующие команды:
IPC_STAT Поместить текущее значение каждого поля структуры данных, ассоциированной с идентификатором semid, в структуру, на которую указывает arg.buf. Содержимое этой структуры определяется в . {Требуется право на чтение.} IPC_SET Присвоить следующим полям структуры данных, ассоциированной с идентификатором semid, соответствующие значения, находящиеся в структуре, на которую указывает arg.buf:
sem_perm.uid sem_perm.gid sem_perm.mode /* Только младшие 9 бит */
Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля sem_perm.cuid или sem_perm.uid в структуре данных, ассоциированной с идентификатором semid. IPC_RMID Удалить из системы идентификатор семафора, определяемый значением semid, ликвидировать множество семафоров и ассоциированную с ним структуру данных. Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля sem_perm.cuid или sem_perm.uid в структуре данных, ассоциированной с идентификатором semid.
НАЗВАНИЕ
semget - получение идентификатора множества семафоров
СИНТАКСИС
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>
int semget (key, nsems, semflg) key_t key; int nsems, semflg;
ОПИСАНИЕ
Системный вызов semget возвращает идентификатор множества семафоров, ассоциированный с ключом key.
Идентификатор и ассоциированные с ним структура данных и множество из nsems семафоров [см. ] создаются для ключа key в следующих случаях:
Значение аргумента key равно IPC_PRIVATE. Ключ key еще не имеет ассоциированного с ним идентификатора множества семафоров и выражение (semflg & IPC_CREAT) истинно.
При создании структуры данных, ассоциированной с новым идентификатором множества семафоров, выполняются следующие инициализирующие действия:
Значения полей sem_perm.cuid, sem_perm.uid, sem_perm.cgid и sem_perm.gid устанавливаются равными действующему идентификатору пользователя и, соответственно, действующему идентификатору группы вызывающего процесса. Младшие 9 бит поля sem_perm.mode устанавливаются равными 9 младшим битам аргумента semflg. Значение поля sem_nsems устанавливается равным значению аргумента nsems. Значение поля sem_otime устанавливается равным 0 и значение поля sem_ctime устанавливается равным текущему времени.
Системный вызов semget завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EINVAL] Значение аргумента nsems меньше или равно 0, или больше максимально допустимого в системе. [EACCES] Для ключа key уже существует идентификатор множества семафоров, но не могут быть предоставлены права доступа [см. ], определенные в 9 младших битах аргумента semflg. [EINVAL] Для ключа key уже существует идентификатор множества семафоров, но количество семафоров в ассоциированном множестве меньше значения nsems и значение nsems не равно 0. [ENOENT] Для ключа key не существует идентификатор множества семафоров и выражение (semflg & IPC_CREAT) ложно. [ENOSPC] Идентификатор множества семафоров должен быть создан, но тогда будет превышено максимально допустимое количество идентификаторов в системе. [ENOSPC] Идентификатор множества семафоров должен быть создан, но тогда будет превышено максимально допустимое количество семафоров в системе. [EEXIST] Для ключа key уже существует идентификатор множества семафоров и выражение ((semflg & IPC_CREAT) & (semflg & IPC_EXCL)) истинно.
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
При успешном завершении системного вызова возвращается неотрицательное целое число - идентификатор множества семафоров. В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
НАЗВАНИЕ
semop - операции над множеством семафоров
СИНТАКСИС
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>
int semop (semid, sops, nsops); int semid; struct sembuf **sops; unsigned nsops;
ОПИСАНИЕ
Системный вызов semop используется для выполнения набора операций над множеством семафоров, ассоциированным с идентификатором semid. Значение аргумента sops является указателем на массив структур, описывающих операции (см. СЮРПРИЗЫ). Значение аргумента nsops равно количеству структур в массиве. Каждая структура, описывающая операцию, содержит следующие поля:
short sem_num; /* Номер семафора */ short sem_op; /* Операция над семафором */ short sem_flg; /* Флаги операции */
Каждая операция, специфицированная значением sem_op, выполняется над соответствующим семафором, заданным значениями semid и sem_num.
Значение поля sem_op специфицирует одну из трех операций:
Если значение sem_op отрицательно, то выполняется одно из следующих действий {Требуется право на изменение.}:
Если значение семафора semval [см. ] больше или равно абсолютной величине sem_op, то абсолютная величина sem_op вычитается из значения semval. Аналогично, если выражение (sem_flg & SEM_UNDO) истинно, то абсолютная величина sem_op добавляется к значению переменной semadj вызывающего процесса для заданного семафора [см. ]. Если значение семафора semval меньше абсолютной величины sem_op и выражение (sem_flg & IPC_NOWAIT) истинно, то сразу же возвращается управление вызывающему процессу. Если значение семафора semval меньше абсолютной величины sem_op и выражение (sem_flg & IPC_NOWAIT) ложно, то увеличивается значение semncnt соответствующего семафора и приостанавливается выполнение вызывающего процесса до появления одного из следующих событий:
Значение semval становится большим или равным абсолютной величине sem_op. Когда это происходит, то соответствующее заданному семафору значение semncnt уменьшается на 1, абсолютная величина sem_op вычитается из значения semval и, если выражение (sem_flg & IPC_UNDO) истинно, абсолютная величина sem_op добавляется к значению semadj вызывающего процесса для заданного семафора.
НАЗВАНИЕ
tty[a-h], tty[A-H], tty2[a-h], tty2[A-H] - интерфейс к последовательным портам.
ОПИСАНИЕ
Файлы tty[a-h], tty[A-H], tty2[a-h], tty2pA-H] к стандартным и дополнительным последовательным портам компьютера. Каждый из этих файлов соответствует одному последовательному порту (с модемным управлением или без него). Эти файлы получают свое имя в соответствии со следующими соглашениями:
Первое число в имени файла соответствует разъему платы расширения COM. Строчные буквы указывают на отсутствие модемного управления. Прописные буквы указывают на наличие модемного управления портом.
Файлы tty1a и tty1A относятся к порту COM1, а файлы tty2a и tty2A относятся к порту COM2.
Например, если плата расширения COM1 имеет четыре порта, плата COM2 - один, то вы можете обращаться к следующим файлам:
tty1a tty1A tty1b tty1B tty1c tty1C tty1d tty1D
tty2a tty2A
Каждый последовательный порт может использоваться в режиме с модемным управлением и в режиме без модемного управления. Имена устройств в следующей таблице относятся к последовательным портам с модемным управлениям и без него. В первой части таблицы описываются платы COM1, а во второй части - платы COM2. "Малое число" - это малое число устройства соответствующего порта (см. mknod(1)).
Векторы прерывания:
Для плат COM1 - 4
Для плат COM2 - 3
Список адресов ввода/вывода смотрите в "Описании", прилагаемом к дистрибуции.
Доступ к файлам
Доступ к файлам можно осуществить только в том случае, если соответствующая плата последовательного интерфейса установлена и правильно задан адрес ввода/вывода перемычки.
ИМЯ
set - установка режимов
СИНТАКСИС
set [+|-][aefmnuvx [arg...]]
ОПИСАНИЕ
Команда set устанавливает (-) или обнуляет (+) флаг, устанавливает позиционные параметры arg, а если этот аргумент отсутствует, то все позиционные параметры обнуляются.
ФЛАГИ
НАЗВАНИЕ
setbuf, setvbuf - назначение буферов для потока
СИНТАКСИС
#include <stdio.h>
void setbuf (stream, buf) FILE *stream; char *buf;
void setvbuf (stream, buf, type, size) FILE *stream; char *buf; int type, size;
ОПИСАНИЕ
Функция setbuf может быть использована после открытия потока, но перед тем, как выполнена первая из процедур ввода/вывода. При этом массив, на который указывает аргумент buf, будет использоваться вместо автоматически назначаемых буферов. Если значение buf равно NULL, ввод/вывод будет полностью небуферизованным.
Требуемый размер буфера определяется константой BUFSIZ, заданной во включаемом файле <stdio.h>:
char buf [BUFSIZ];
Функция setvbuf также может быть использована сразу после открытия потока, но перед тем, как выполнена первая из процедур ввода/вывода. Аргумент type определяет тип буферизации. Допустимы следующие типы буферизации, описанные в <stdio.h>:
_IOFBF
Полная буферизация ввода/вывода.
_IOLBF
Строчная буферизация вывода; буфер вывода выталкивается при выдаче символа перевода строки, заполнении буфера или запросе на ввод.
_IONBF
Полное отсутствие буферизации ввода/вывода.
Если значение buf не равно NULL, массив, на который указывает buf, будет использоваться вместо автоматически назначаемых буферов. Аргумент size задает размер используемого буфера. Константа BUFSIZ, определенная во включаемом файле <stdio.h>, является разумным значением для размера буфера. Если ввод/вывод небуферизован, то аргументы buf и size игнорируются.
По умолчанию вывод на терминал является строчно буферизованным, а весь остальной ввод/вывод буферизуется полностью.
СМ. ТАКЖЕ
, , , , .
ДИАГНОСТИКА
Если указано некорректное значение для аргументов type или size, то функция setvbuf возвращает ненулевое значение. В противном случае результат равен 0.
ПРИМЕЧАНИЯ
Распространенной ошибкой является выделение под буфер локальной переменной блока без закрытия потока при выходе из блока.
НАЗВАНИЕ
setclock - устанавливает в системе реальное время (время суток).
СИНТАКСИС
setclock [time]
ОПИСАНИЕ
Файл setclock устанавливает время суток, реальное время в системе, поддерживаемое питанием от аккумуляторов, в заданное значение time. Если же time не задано, то высвечивается текущее значение этого времени. Аргумент time должен быть представлен в виде комбинации цифр следующего формата:
MMddhhmmyy
где MM - месяц, hh - час, mm - минуты, yy - две последние цифры года. Если год не задается, то берется текущая установка yy. Например, команда
082615035
устанавливает время суток на 15:03, 26 августа, 1985 года.
ФАЙЛЫ
/etc/setclock
СМ. ТАКЖЕ
ПРИМЕЧАНИЯ
Не все компьютеры снабжены часами реального времени, питаемыми от аккумуляторов. По этому вопросу обращайтесь к документации по аппаратной части вашего компьютера.
ИМЯ
setcolor,ssetcolour - Назначает цвет экрана
СИНТАКСИС
setcolor -[nbrgopc] argument [argument]
ОПИСАНИЕ
Команда setcolor позволяет пользователю назначать цвет экрана для цветного экрана. Цвета как переднего плана , так и фона могут быть установлены независимо друг от друга в диапазоне 16 цветов. Команда setcolor также может назначить негативное видеоизображение и цвета графических символов. Команда setcolor без аргументов формирует обычное сообщение, которое высвечивает все доступные цвета, затем восстанавливает цвет экрана в его исходное состояние.
Например, в следующих строках перечисляются возможные цвета:
Используются следующие флаги. В аргументах перечисленных ниже, "цвет" выбирается из списка приведенного выше.
-n Устанавливает на экране "обычные" белые символы на черном фоне.
color [color]
Устанавливает для переднего плана первый цвет. Назначает фону второй цвет, если определен выбор для второго цвета.
-b color
Устанавливает указанный цвет для фона.
-r color
Устанавливает для символов негативного видеоизображения переднего плана первый цвет. Устанавливает для символов негативного видеоизображения фона второй цвет.
-g color
Устанавливает первый цвет для графических символов переднего плана. Устанавливает для графических символов фона второй цвет.
-o Устанавливает цвет для рамки экрана (область overscan).
-p pitch duration (длительность основного тона)
Устанавливает основной тон и длительность звонка. Основной тон это промежуток времени в микросекундах, длительность измеряется в 1/5 части секунды. В случае использования этой опции, комбинация control-G (звонок) должна быть отображена на экране для выполнения команды.
Например:
setcolor -p 2500 2 echo^G
-cfirst last
Устанавливает первую и последнюю линии сканирования курсора.
ЗАМЕЧАНИЯ
Возможность команды setcolor устанавливать любую из выше приведенных функций, в конечном счете зависит от возможности устройств в поддержке этих возможностей. Команда setcolor формирует escape последовательность, которая может или не может влиять на монохромное устройство.
Иногда изменяя цвет экрана можно продлить жизнь вашего монитора.
НАЗВАНИЕ
getdomainname, setdomainname - получить/установить имя текущего домена
СИНТАКСИС
getdomainname(name,namelen) char *name; int namelen;
setdomainname(name,namelen) char *name; int namelen;
ОПИСАНИЕ
Функция getdomainname возвращает имя домена для текущего процессора, ранее установленное функцией setdomainname. Параметр namelen описывает размер массива name. Возвращаемое имя дополняется пустыми символами.
Функция setdomainname присваивает домену главной машины имя name, имеющее длину namelen. Вызов этой функции доступен только суперпользователю и обычно используется только при начальной загрузке системы. Назначение доменов состоит в создании видимости двух работающих сетей, объединяемых общим host-именем. Различие между сетями проводится по имени домена.
Возвращаемое значение:
В случае успеха возвращается нулевое значение. В противном случае возвращается -1 и код ошибки, запоминаемый в глобальной переменной errno.
ОШИБКИ
ЗАМЕЧАНИЯ
Длина имени домена ограничена 64 символами.
НАЗВАНИЕ
gethostent, gethostbyaddr, gethostbyname, sethostent, endhostent - получить сведения о главной сетевой машине
СИНТАКСИС
#include <netdb.h>
struct hostent *gethostent()
struct hostent *gethostbyname(name) char *name;
struct hostent *gethostbyaddr(addr,len,type) char *addr; int len,type;
sethostent(stayopen) int stayopen
endhostent()
ОПИСАНИЕ
Функции gethostent, gethostbyname и gethostbyaddr возвращают указатель на объект, имеющий следующую структуру и описывающий строку в главной сетевой БД /etc/hosts:
struct hostent { char *h_name; /* официальное host-имя */ char **h_aliases; /* список псевдонимов */ int h_addrtype; /* тип адреса */ int h_length; /* длина адреса */ char *h_addr; /* адрес */ };
ЭЛЕМЕНТЫ СТРУКТУРЫ
Функция gethostent считывает следующую строку файла, в случае необходимости открывая этот файл.
Функция sethostent открывает и переходит к началу файла. Если флаг stayopen имеет ненулевое значение, главная БД не будет закрываться после каждого вызова функции gethostent.
Функция endhostent закрывает файл.
Функции gethostbyname и gethostbyaddr последовательно просматривают файл с самого начала в поисках имени или адреса главной машины.
ФАЙЛЫ
/etc/hosts
ДИАГНОСТИКА
По достижении конца файла или в случае появления ошибки возвращается нулевой указатель.
ЗАМЕЧАНИЯ
Вся информация сохраняется в статической области, поэтому в целях сохранения ее необходимо скопировать. Адрес может иметь только формат Internet.
НАЗВАНИЕ
setjmp, longjmp - нелокальная передача управления
СИНТАКСИС
#include <setjmp.h>
int setjmp (env) jmp_buf env;
void longjmp (env, val) jmp_buf env; int val;
ОПИСАНИЕ
Описываемые функции полезны при обработке ошибок и прерываний, случившихся на одном из нижних уровней программной системы.
Функция setjmp сохраняет текущее стековое окружение в массиве env (тип jmp_buf определен во включаемом файле <setjmp.h>) для последующего использования функцией longjmp. Результат функции setjmp равен 0.
Функция longjmp восстанавливает окружение, сохраненное при последнем вызове setjmp с соответствующим аргументом env. После завершения longjmp выполнение программы продолжается так, как будто соответствующий вызов setjmp только что вернул значение val. Отметим, что в промежутке между обращениями к setjmp и longjmp не должно быть возврата из функции, вызывавшей setjmp.
С помощью функции longjmp невозможно вернуть нулевое значение. Если при вызове longjmp аргумент val равен 0, setjmp все равно вернет 1. Тем самым всегда есть возможность отличить естественный возврат из функции setjmp от искусственного, ставшего результатом выполнения longjmp. Значения всех глобальных объектов в момент искусственного возврата из setjmp, естественно, те же, что и в момент вызова longjmp. Значения локальных объектов соответствуют экземпляру функции, вызвавшей setjmp.
ПРИМЕР
#include <setjmp.h>
jmp_buf env; int i=0; main () { void exit (); if (setjmp (env) != 0) { (void) printf ( "Значение i при 2-ом возврате из setjmp: %d\n",i); exit (0); } (void) printf ( "Значение i при 1-ом возврате из setjmp: %d\n",i); i = 1; g(); /* Недостижимый фрагмент */ } g() { longjmp (env, 1); /* Недостижимый фрагмент */ }
Результаты выполнения этой программы после компиляции с языка C будут следующими:
Значение i при 1-ом возврате из setjmp: 0 Значение i при 2-ом возврате из setjmp: 1
СМ. ТАКЖЕ
.
ПРЕДОСТЕРЕЖЕНИЯ
Если при обращении к функции longjmp передается аргумент env, не заполненный setjmp, или последний вызов setjmp был в функции, из которой уже произошел возврат, то Вам гарантируется абсолютный хаос.
ИМЯ
setkey - Назначение функциональных клавиш
СИНТАКСИС
setkey keynum string
ОПИСАНИЕ
Команда setkey назначает данную строку (string) ANSI выводом функциональной клавиши компьютера, задаваемой параметром keynum. Например, команда:
setkey 1 date
Назначает строку "date" как вывод функциональной клавиши 1. Параметр string может содержать управляющие символы, такие как символ новой строки и его следует взять в кавычки, чтобы защитить от обработки интерпретатором shell. Например, команда:
setkey 2 "pwd;lc\n"
ставит в соответствии функциональной клавише 2 командную последовательность "pwd;lc". Обратите внимание как символ новой строки вставляется в строку с кавычками. Это вызовет выполнение команд в том случае, если нажата функциональная клавиша 2. Иначе, клавишу Enter следует нажать после нажатия функциональной клавиши, как в предыдущем примере.
ФАЙЛЫ
/bin/setkey
ЗАМЕЧАНИЯ
Команда setkey работает только на клавиатуре консоли.
Строковая таблица соответствия содержит описание функциональных клавиш. Ее объем занимает 512 байт (типа strmap_t),где строки заканчивающиеся знаком null могут быть введены для переопределения функциональных клавиш. Первая строка заканчиваемая знаком null назначается первой строковой клавише, вторая второй строкой клавише и так далее. На каждый мультиэкран существует одна таблица отображения строк.
Хотя размер строковой таблицы соответствия команды setkey занимает 512 байт существует ограничение в 30 символов, которые могут быть назначены любой отдельной функциональной клавише.
Формирование строковой таблицы соответствия, занимающей более чем 512 символов, вызовет переполнение буфера функциональной клавиши. Если это произошло, то последовательности посылаемые клавишами управления курсором (стрелки) переписываются, фактически искажая себя. В случае переполнения буфера функциональной клавиши, единственным путем дающим возможность пользоваться клавишами управления курсором является перезагрузка системы.
В таблице приведенной ниже представлены значения keynum (номер комбинации) для функциональных клавиш:
НАЗВАНИЕ
setmnt - обновление таблицы смонтированных файловых систем
СИНТАКСИС
/etc/setmnt
ОПИСАНИЕ
Команда setmnt создает таблицу смонтированных файловых систем [см. ], которая используется командами и umount. Команда setmnt читает информацию со стандартного ввода и для каждой строки создает запись в файле /etc/mnttab. Вводимые строки должны иметь следующий формат:
файловая_система каталог
где файловая_система задается именем содержащего ее специального файла (например /dev/dsk/hd0s0), а каталог задает точку подключения файловой_системы. Таким образом, файловая_система и каталог становятся двумя первыми полями в записях таблицы смонтированных файловых систем.
ФАЙЛЫ
/etc/mnttab
СМ. ТАКЖЕ
.
в Справочнике программиста.
СЮРПРИЗЫ
Если имя файловой_системы или каталога длиннее 32 символов, могут возникнуть сложности.
Команда setmnt содержит внутри себя ограничение на максимальное число записей в таблице.
НАЗВАНИЕ
setmnt - формирует таблицу /etc/mnttab.
СИНТАКСИС
/etc/setmnt
ОПИСАНИЕ
setmnt создает таблицу /etc/mnttab (см. mnttab(3)), которая требуется для команд и unmount(8). setmnt читает стандартный ввод и для каждой строки создает запись в таблице mnttab. Строки ввода имеют формат:
filesys node
где filesys - имя специального файла файловой системы (например, "hd0"), а node - корневое имя этой файловой системы. Таким образом filesys и node становятся первыми двумя символьными строками в записи mnttab(3).
ФАЙЛЫ
/etc/mnttab
СМ. ТАКЖЕ
mnttab(3)
ПРИМЕЧАНИЯ
Если filesys или node - длинне 128 символов, возникает ошибка.
setmnt устанавливает без уведомления верхнюю границу максимального количества записей mnttab.
setmnt обычно вызывается файлом /etc/rc при загрузке системы.
НАЗВАНИЕ
setpgrp - выполнение команды в рамках отдельной группы процессов
СИНТАКСИС
setpgrp команда [аргумент ...]
ОПИСАНИЕ
Setpgrp выполняет команду в рамках отдельной группы процессов. Идентификатор этой группы равен идентификатору процесса, запущенного для выполнения команды.
Смысл setpgrg в том, чтобы асинхронно запустить команду, выполнение которой не прекратится после выхода из системы инициатора команды. Например, программа обслуживания сети x25 может быть запущена следующим образом:
cd /net setpgrp /net/x25 &
СМ. ТАКЖЕ
в Справочнике программиста.
ПРЕДОСТЕРЕЖЕНИЯ
В командной строке
setpgrp команда1; команда2
setpgrp применяется только к команде1. Строка
setpgrp (команда1; команда2)
синтаксически некорректна.
НАЗВАНИЕ
setpgrp - установка идентификатора группы процесса
СИНТАКСИС
int setpgrp ( )
ОПИСАНИЕ
Системный вызов setpgrp устанавливает идентификатор группы вызывающего процесса равным идентификатору этого процесса и возвращает tpgrp
НАЗВАНИЕ
settime - изменяет даты обращения к файлам и их корректировки.
СИНТАКСИС
settime mmddhhmm [yy] [-f fname] name
ОПИСАНИЕ
Устанавливает даты обращения к файлам и их модификации. Эти даты устанавливаются в соответствии с заданными в командной строке датами или с датами, заданными посредством опции -f и находящимися в файле fname. Для установки новой даты можно использовать только один из этих способов. Здесь mm - номер месяца, dd - номер дня месяца, hh - номер часа (по 24-часовой системе), вторые mm минуты, yy - последние две цифры года, задавать которые не обязательно. Например:
settime 1008004583 ralph pete
устанавливает даты обращения и модификации файлов ralph и pete на 8 октября, 12:45, 1983. В другом примере:
settime -f ralph john
дата в файле john устанавливается равной дате в файле ralph.
ПРИМЕЧАНИЯ
Рекомендуется использовать вместо settime команду touch.
ИМЯ
sh - Вызывает командный интерпретатор shell.
СИНТАКСИС
sh [-ceiknrstuvx] [args]
ОПИСАНИЕ
Shell - это cтандартный командный язык программирования, который выполняет чтение команд с терминала или из файла. Ниже смотрите описание раздела ВЫЗОВ (INVOCATION), в котором описаны значения аргументов интерпретатора shell.
КОМАНДЫ
Простая команда(simple-command) - это последовательность слов(words), не содержащих пустых символов и разделенных пробелами (пустой символ(blank) - это знак табуляции или пробел). Первое слово определяет имя выполняемой команды. За исключением того что определено ниже, оставшиеся слова передаются как аргументы в вызванную команду. Имя команды передается как аргумент 0 (смотрите команду ). В случае нормального завершения работы простой команды значение (value) - это состояние ее выхода, а в случае аварийного завершения (восьмеричное значение)1000+ значение состояния (status) (т.е. если аварийно завершилась основная процедура файла). Смотрите команду signal(S), где приведен список оценок состояний.
Конвейер(pipeline) - это последовательность одной или более команд, разделенных символом вертикальная черта (|). (Символ ^ устаревший синоним для символа вертикальная черта и его не следует использовать в конвейере).Стандартный вывод каждой команды, кроме последней, связан каналом pipe(S) cо стандартным вводом следующей команды. Каждая команда выполняется как отдельный процесс; интерпретатор shell ждет завершения последней команды.
Список(list) - это последовательность одного или более конвейеров, разделенных символами ;,&,&& или (две вертикальные черты) и необязательно завершающихся символами ; или &. Из этих четырех символов, символы ; и & имеют одинаковый приоритет, который ниже чем у символов && и . Символы && и также имеют равный приоритет. Точка с запятой (;) вызывает последовательное выполнение предыдущего конвейера; амперсанд (&) вызывает асинхронное выполнение предыдущего конвейера (т.е. интерпретатор shell не ждет завершения этого конвейера). Символ &&() вызывает список(list) следующий за ним для выполнения, только если состояние выхода предыдущего конвейера равно нулю (не ноль). Произвольное количество символов новых строк может появиться в списке (list) вместо точки с запятой (;) для разделения команд.
Команда (а cоmmand) представляет собой либо простую команду, либо одну из перечисленных ниже. Значение,возвращаемое командой,определяется значением последней простой команды выполненной в команде, кроме значений установленных иначе.
НАЗВАНИЕ
shl - менеджер семейства shell'ов
СИНТАКСИС
shl
ОПИСАНИЕ
Shl позволяет с одного терминала взаимодействовать с семейством shell'ов. Пользователь управляет членами семейства, или экземплярами, с помощью команд, описанных ниже.
Текущим называется экземпляр shell'а, который может производить ввод с клавиатуры. Другие экземпляры при попытке ввода с клавиатуры блокируются. Выводимая разными членами семейства информация может перемешиваться. Чтобы блокировать вывод экземпляра, который не является текущим, необходимо для этого члена семейства установить опцию loblk в stty.
Для передачи управления от члена семейства к менеджеру используется символ-переключатель swtch в stty (обычно CTRL+Z). Приглашением менеджера является >>>, что помогает отличить его от члена семейства.
Экземпляр shell'а связан с виртуальным терминалом (/dev/sxt/???). Виртуальным терминалом можно управлять так же, как и обычным, с помощью и . Каждый экземпляр имеет собственный идентификатор группы процессов.
НАЗВАНИЕ
shmctl - операции управления разделяемыми сегментами памяти
СИНТАКСИС
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h>
int shmctl (shmid, cmd, buf) int shmid, cmd; struct shmid_ds *buf;
ОПИСАНИЕ
Системный вызов shmctl позволяет выполнять операции управления разделяемыми сегментами памяти. Операция определяется значением аргумента cmd, которое должно быть одним из следующих:
IPC_STAT Поместить текущие значения полей структуры данных, ассоциированной с идентификатором разделяемого сегмента shmid, в структуру, на которую указывает аргумент buf. Содержимое структуры описано в . {Требуется право на чтение.} IPC_SET Присвоить следующим полям структуры данных, ассоциированной с идентификатором shmid, соответствующие значения, находящиеся в структуре, на которую указывает аргумент buf:
shm_perm.uid shm_perm.gid shm_perm.mode /* Только младшие 9 бит */
Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля shm_perm.cuid или shm_perm.uid в структуре, ассоциированной с идентификатором shmid. IPC_RMID Удалить из системы идентификатор разделяемого сегмента, заданный аргументом shmid, ликвидировать сегмент и ассоциированную с ним структуру данных. Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля shm_perm.cuid или shm_perm.uid в структуре данных, ассоциированной с идентификатором shmid. SHM_LOCK Удержать в памяти разделяемый сегмент, специфицированный идентификатором shmid. Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный идентификатору суперпользователя. SHM_UNLOCK Освободить разделяемой сегмент памяти, специфицированный идентификатором shmid. Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный идентификатору суперпользователя.
НАЗВАНИЕ
shmget - получение идентификатора разделяемого сегмента памяти
СИНТАКСИС
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h>
int shmget (key, size, shmflg) key_t key; int size, shmflg;
ОПИСАНИЕ
Системный вызов shmget возвращает идентификатор разделяемого сегмента памяти, ассоциированный с ключом key.
Идентификатор и ассоциированные с ним структура данных и разделяемый сегмент размером по меньшей мере size байт [см. ] создаются для ключа key в следующих случаях:
Значение аргумента key равно IPC_PRIVATE. Ключ key пока еще не имеет ассоциированного с ним идентификатора и выражение (shmflg & IPC_CREAT) истинно.
При создании структуры данных, ассоциированной с новым идентификатором разделяемого сегмента памяти, выполняются следующие инициализирующие действия:
Значения полей shm_perm.cuid, shm_perm.uid, shm_perm.cgid и shm_perm.gid устанавливаются равными действующему идентификатору пользователя и, соответственно, действующему идентификатору группы вызывающего процесса. Младшие 9 бит поля shm_perm.mode устанавливаются равными 9 младшим битам аргумента shmflg; значение поля shm_segsz устанавливается равным аргументу size; Значения полей shm_lpid, shm_nattch, shm_atime и shm_dtime устанавливаются равными 0. Значение поля shm_ctime устанавливается равным текущему времени.
Системный вызов shmget завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EINVAL] Значение аргумента size меньше минимального или больше максимального значения, принятых в системе. [EACCES] Для ключа key уже существует идентификатор разделяемого сегмента, но не могут быть предоставлены права доступа [см. ], определенные в 9 младших битах аргумента shmflg. [EINVAL] Для ключа key уже существует идентификатор разделяемого сегмента, но размер сегмента меньше значения аргумента size и значение size не равно нулю. [ENOENT] Для ключа key не существует идентификатор разделяемого сегмента и выражение (shmflg & IPC_CREAT) ложно. [ENOSPC] Идентификатор не создается из-за превышения максимального разрешаемого системой количества идентификаторов разделяемых сегментов. [ENOMEM] Идентификатор и ассоциированный с ним разделяемый сегмент памяти не создаются из-за отсутствия достаточного количества памяти. [EEXIST] Для ключа key уже существует идентификатор разделяемого сегмента и выражение ((shmflg & IPC_CREAT) & (shmflg & IPC_EXCL)) истинно.
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
При успешном завершении системного вызова возвращается неотрицательное целое число - идентификатор разделяемого сегмента памяти. В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
ПРИМЕЧАНИЯ
Необходимо явно удалять разделяемый сегмент памяти после того, как удаляется последняя ссылка на него.
НАЗВАНИЕ
shmop - операции над разделяемыми сегментами памяти
СИНТАКСИС
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h>
char *shmat (shmid, shmaddr, shmflg) int shmid; char *shmaddr; int shmflg;
int shmdt (shmaddr) char *shmaddr;
ОПИСАНИЕ
Присоединение сегмента
Системный вызов shmat (см. СЮРПРИЗЫ) присоединяет разделяемый сегмент памяти, ассоциированный с идентификатором shmid, к сегменту данных вызывающего процесса. Сегмент присоединяется по адресу, заданному одним из следующих способов:
Если значение аргумента shmaddr равно нулю, то сегмент присоединяется по адресу, выбранному системой. Если значение аргумента shmaddr не равно нулю и выражение (shmflg & SHM_RND) истинно, то сегмент просоединяется по адресу, вычисляемому по формуле (shmaddr - (shmaddr mod SHMLBA)) [см. ]. Если значение аргумента shmaddr не равно нулю и выражение (shmflg & SHM_RND) ложно, то сегмент присоединяется по адресу, задаваемому аргументом shmaddr.
Отсоединение сегмента
Системный вызов shmdt отсоединяет разделяемый сегмент памяти, расположенный по адресу shmaddr, от сегмента данных вызывающего процесса.
Если выражение (shmflg & SHM_RDONLY) истинно, то сегмент присоединяется для чтения {требуется право на чтение}, в противном случае сегмент присоединяется для чтения и записи {требуется право на чтение и запись}.
Системный вызов shmat завершается неудачей и разделяемый сегмент не присоединяется, если выполнено хотя бы одно из следующих условий:
[EINVAL] Значение аргумента shmid не является корректным идентификатором разделяемого сегмента. [EACCES] У вызывающего процесса нет прав на выполнение операции [см. ]. [ENOMEM] В сегменте данных нет места для присоединения разделяемого сегмента. [EINVAL] Значение аргумента shmaddr не равно нулю и значение выражения (shmaddr-(shmaddr mod SHMLBA)) не является корректным адресом. [EINVAL] Значение аргумента shmaddr не равно нулю, выражение (shmflg & SHM_RND) ложно и значение аргумента shmaddr не является корректным адресом. [EMFILE] Количество разделяемых сегментов, присоединенных к вызывающему процессу, превышает максимально допустимую величину.
НАЗВАНИЕ
showmount - показ всех удаленных монтирований
СИНТАКСИС
/etc/showmount [-a] [-d] [-e] [host]
ОПИСАНИЕ
Команда showmount выводит список всех клиентов, которые выполняли удаленное монтирование файловой системы на host-машине. Эта информация поставляется сервером и сохраняется в файле /etc/rmtab. Если аргумент host не указан, используется имя, возвращаемое .
Опции:
hostname:directory
где hostname - имя клиента, а directory - корень монтированной файловой системы.
СМ. ТАКЖЕ
, ,
ЗАМЕЧАНИЯ
Если клиент прерывает свою работу аварийно, соответствующая ему запись из списка не удаляется до перезагрузки и демонтирования файловой системы.
ИМЯ
shutdn - дoвывoдит инфopмaцию из диcкoвoгo кэшa и ocтaнaвливaeт пpoцeccop
СИНТАКСИС
#include <sys/filsys.h>
#include <sys/param.h>
#include <sys/types.h>
void shutdn(sblk,nsblk,arg) struct filsys *sblk, *nsblk; int arg;
ОПИСАНИЕ
Shutdn дoвывoдит вcю инфopмaцию из пaмяти нa диcки. Cюдa вxoдят мoдифициpoвaнныe cyпepблoки, индeкcныe дecкpиптopы и блoки дaнныx из oтлoжeннoгo ввoдa/вывoдa. Cyпepблoки вcex фaйлoвыx cиcтeм, дocтyпныx для зaпиcи, пoмeчaютcя кaк "чиcтыe", чтoбы пpи пoвтopнoм мoнтиpoвaнии нe пpoизвoдилacь oпepaция oчиcтки пpи зaгpyзкe XENIX. Зaтeм shutdn вывoдит нa кoнcoль cooбщeниe "Normal System Shutdown" и ocтaнaвливaeт пpoцeccop.
Пocлe этoгo пpoиcxoдит или пoлнaя ocтaнoвкa cиcтeмы, или пepeзaгpyзкa в зaвиcимocти oт знaчeния arg (0 или 1).
Ecли sblk бoльшe 1, oн paccмaтpивaeтcя кaк aдpec cyпepблoкa, кoтopый дoлжeн быть зaпиcaн нa cиcтeмный диcк, ecли nsblk являeтcя пoбитoвoй eгo инвepcиeй. Этa вoзмoжнocть пoзвoляeт coздaвaть coбcтвeнныe кoпии cyпepблoкa cиcтeмнoгo диcкa.
Ecли sblk paвeн 1, втopым apгyмeнтoм являeтcя кoмaндa, a тpeтий apгyмeнт являeтcя apгyмeнтoм этoй кoмaнды. Koмaндa CONFPANIC пpи apгyмeнтe 0 пoлнocтью ocтaнaвливaeт cиcтeмy, a пpи apгyмeнтe 1 пepeзaгpyжaeт ee. Дaннaя кoмaндa являeтcя cиcтeмнo зaвиcимым cиcтeмным вызoвoм. Этoт вapиaнт shutdn иcпoльзyeтcя для тoгo, чтoбы yкaзaть cиcтeмe кaк peaгиpoвaть нa cлeдyющee иcключитeльнoe coбытиe.
Shutdn вo вpeмя paбoты блoкиpyeт вce ocтaльныe пpoцeccы. Peкoмeндyeтcя дo зaпycкa shutdn зaвepшить вce пpoцeccы (cм. kill(3)), тaк кaк пpи aктивнocти ввoдa/вывoдa cyпepблoки мoгyт нe пoмeчaтьcя кaк "чиcтыe".
Bызывaющий пpoцecc дoлжeн быть пpивилeгиpoвaнным.
СМ. ТАКЖЕ
,haltsys(8),shutdown(1),mount(3),kill(3).
ЗAМEЧAНИЯ
Heoбxoдимo иcпoльзoвaть флaг пocтpoeния -lx.
НАЗВАНИЕ
shutdown - остановка системы, изменение уровня выполнения
СИНТАКСИС
/etc/shutdown [-y] [-gзадержка] [-iуровень_выполнения]
ОПИСАНИЕ
Утилита shutdown служит для изменения уровня выполнения системы. По умолчанию система переводится в однопользовательский режим, в котором ОС UNIX доступна только с консоли.
Перед началом действий по изменению уровня выполнения утилита посылает сначала предупреждающее, а после задержки и финальное сообщения. По умолчанию перед остановкой демонов и завершением процессов запрашивается подтверждение.
Допустимы следующие опции:
-y Отменить запрос подтверждения. Команда будет работать без вмешательства пользователя. По умолчанию, между предупреждающим и финальным сообщениями предусмотрена задержка в 60 секунд; такая же задержка выполняется между финальным сообщением и запросом подтверждения.
-gзадержка
Изменить стандартную величину задержки.
-iуровень_выполнения
Уровень_выполнения передается утилите . Система перейдет на этот уровень после всех сообщений, задержек и подтверждений. Подразумеваемый уровень есть S (то же, что s, и почти то же, что 1).
Рекомендуемые уровни_выполнения и действия при переходе на них:
0 Остановить систему, подготовив ее к безопасному выключению питания. Выключить питание, если позволяет аппаратура. Для выполнения этих действий вызывается процедура /etc/rc0.
1, s, S
Перевести систему в однопользовательский режим, используя процедуру /etc/rc0. Разница между уровнями S и 1 состоит в том, что на уровне S все процессы, порожденные init, завершены, но файловые системы не размонтированы. На уровне 1 размонтированы все файловые системы, кроме корневой, и завершены все пользовательские процессы, кроме консольных.
6 Остановить систему и выполнить перезагрузку.
Утилита shutdown написана на языке shell; ее может выполнять только суперпользователь.
СМ. ТАКЖЕ
, , .
в Справочнике программиста.
НАЗВАНИЕ
shutdown - прекращает работу всех процессов.
СИНТАКСИС
/etc/shutdown [time] [su]
ОПИСАНИЕ
shutdown является частью операционных процедур системы UNIX. Ее основная цель - завершить работу всех процессов упорядоченным и осторожным образом. Аргумент time - это количество минут, ожидаемое до разгрузки системы. Необязательный аргумент su позволяет пользователю перейти в однопользовательский режим, не сворачивая систему полностью. Однако, при этом система выходит из многопользовательского режима. shutdown проходит следующие этапы. Вначале все пользователи, подключенные к системе, уведомляются о необходимости выйти из системы посредством всеобщего оповещения. Суперблоки всех файловых систем записываются перед остановкой системы (см. ). Это должно быть сделано перед перезагрузкой системы для обеспечения целостности файловых систем.
Для выполнения команды shutdown вы должны быть привилегированным пользователем.
СМ. ТАКЖЕ
, unmount(8), , boot(HW)
ДИАГНОСТИКА
Самым распространенным сообщением об ошибке является сообщение о том, что "устройство занято" (device busy). Это сообщение появляется, когда некоторая файловая система не может быть демонтирована. Смотрите unmount(8).
ПРИМЕЧАНИЯ
Запустив команду shutdown, нужно дать ей завершить свою работу. Нельзя прерывать ее нажатием клавиш BREAK или DEL.
shutdown не будет функционировать при ее запуске из оболочки.
shutdown паркует головки жестких дисков.
НАЗВАНИЕ
signal - спецификация действий по обработке сигнала
СИНТАКСИС
#include <signal.h>
void (*signal (sig, func)) ( ) int sig; void (*func) ( );
ОПИСАНИЕ
Системный вызов signal позволяет вызывающему процессу выбрать один из трех возможных способов реакции на получение определенного сигнала. Аргументы sig и func специфицируют, соответственно, сигнал и выбор.
Аргумент sig может иметь одно из следующих значений, за исключением SIGKILL:
Аргумент func может иметь одно из трех значений: SIG_DFL, SIG_IGN или адрес_функции. Макросы SIG_DFL и SIG_IGN определены во включаемом файле <signal.h>. Каждый из макросов порождает уникальную константу типа "указатель на функцию типа void", заведомо не соответствующую определяемой функции.
ИМЯ
sigsem - пocылaeт cигнaл пpoцeccy, кoтopый нaxoдитcя в oчepeди к ceмaфopy
СИНТАКСИС
int sigsem(sem_num) int sem_num;
ОПИСАНИЕ
Sigsem пocылaeт cигнaл пpoцeccy, кoтopый нaxoдитcя в oчepeди к ceмaфopy sem_num, чтoбы пocлeдний мoг иcпoльзoвaть pecypc, зaкpытый этим ceмaфopoм. Sigsem иcпoльзyeтcя вмecтe c для cинxpoнизaции дocтyпa пpoцeccoв к oднoмy pecypcy. Hecкoлькo пpoцeccoв мoгyт издaть cиcтeмный вызoв waitsem нa oдин ceмaфop. Пpи этoм oни пepeйдyт в cocтoяниe oжидaния, пoкa пpoцecc, имeющий дocтyп к pecypcy, нe издacт cиcтeмный вызoв sigsem. Ecли oжидaющиx пpoцeccoв нecкoлькo, yпpaвлeниe бyдeт пepeдaнo пepвoмy из oчepeди к ceмaфopy. Oчepeдь к ceмaфopy opгaнизyeтcя пo пpинципy "Пepвым пpишeл - пepвым oбcлyжeн" (FIFO).
СМ. ТАКЖЕ
, , .
Cиcтeмнaя coвмecтимocть
Sigsem мoжeт быть иcпoльзoвaн тoлькo c ceмaфopaми, coздaнными в oпepaциoннoй cиcтeмe XENIX вepcии 3.0, нo нe в cиcтeмe XENIX System V.
ДИАГНОСТИКА
B cлyчae oшибки sigsem вoзвpaщaeт -1. Ecли sem_num нe yкaзывaeт нa фaйл типa "ceмaфop", пepeмeннoй errno пpиcвaивaeтcя знaчeниe ENOTNAM. Ecли sem_num нe oткpыт cиcтeмным вызoвoм opensem, пepeмeннoй errno пpиcвaивaeтcя знaчeниe EBADF. Ecли вызывaющий пpoцecc нe являeтcя влaдeльцeм ceмaфopa (тo ecть этoт пpoцecc пpeдвapитeльнo нe издaл cиcтeмный вызoв waitsem), пepeмeннoй errno пpиcвaивaeтcя знaчeниe ENAVAIL.
ЗAМEЧAНИЯ
Дaннaя вoзмoжнocть являeтcя cильнo cиcтeмнo зaвиcимoй. Пpи кoмпoнoвкe нeoбxoдимo иcпoльзoвaть флaг -lx.
НАЗВАНИЕ
sigset, sighold, sigignore, sigpause - процедуры управления сигналами.
СИНТАКСИС
#include <signal.h> void (*sigset(sig,func))() int sig; void (*func)(); int sighold(sig) int sig; int sigrelse(sig) int sig; int sigignore(sig) int sig; int sigpause(sig) int sig;
ОПИСАНИЕ
Эти функции обеспечивают управлением сигналами для процессов прикладных программ. Системный вызов sigset задает реакцию системы на сигнал sig. Эта реакция заключается либо в вызове обработчика сигнала процесса func, либо в выполнении определенного системой действия.
Параметру sig может быть присвоено любое из приведенных значений, за исключением значения SIGKILL. Сигналы, зависящие от аппаратной или программной реализации, не приведены (см. "Примечания" ниже). Каждое значение sig является макросом, определенным в файле <signal.h> и который может быть представлен в виде выражения-константы.
В отношении звездочек (*) в вышеприведенном списке смотрите текст под SIG_DFL.
Следующие значения для определенных системой действий func также определяются в файле <signal.h>. Каждое из них является макросом, который может быть представлен в виде выражения-константы типа указателя на функцию, возвращающую void, и имеет уникальное значение, которое не соответствует ни одной определенной функции.
НАЗВАНИЕ
sinh, cosh, tanh - гиперболические функции
СИНТАКСИС
#include <math.h>
double sinh (x) double x;
double cosh (x) double x;
double tanh (x) double x;
ОПИСАНИЕ
Функции sinh, cosh и tanh возвращают, соответственно, значения гиперболического синуса, косинуса и тангенса своего аргумента.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
Функции sinh и cosh возвращают значение HUGE (sinh может выдать -HUGE при отрицательных x), если представление результирующего значения приводит к переполнению. Переменной errno присваивается значение ERANGE.
Изложенная процедура обработки ошибок может быть изменена посредством функции .
НАЗВАНИЕ
sio - последовательный драйвер
ОПИСАНИЕ
Драйвер sio предназначен для мультипротокольного коммуникационного контроллера, используемого в платах процессора. Драйвером поддерживаются асинхронные терминалы со следующими характеристиками: скорость передачи от 50 до 9600 бод, размер символа: 5 - 8 бит, контроль на четность/нечетность или без контроля четности, один или два стоп-бита.
ФАЙЛЫ
/dev/console /dev/tty1 /dev/tty2 /dev/tty3
СМ. ТАКЖЕ
.
в Справочнике пользователя.
НАЗВАНИЕ
size - печать размеров секций объектных файлов обычного формата
СИНТАКСИС
size [-o] [-x] [-V] файл ...
ОПИСАНИЕ
Команда size выдает информацию о размерах секций для объектных файлов обычного формата. Выводятся три числа: размеры в байтах секции команд, секции данных и секции неинициализированных данных, а затем их сумма.
По умолчанию выдаются десятичные числа. Можно воспользоваться опциями -o и -x для вывода в восьмеричном и шестнадцатеричном формате соответственно.
При указании опции -V выдается также номер версии команды size.
СМ. ТАКЖЕ
, , .
a.out(4), в Справочнике программиста.
ДИАГНОСТИКА
size: имя: cannot open Файл с данным именем не открывается.
size: имя: bad magic Файл с данным именем не является объектным файлом обычного формата.
ОГРАНИЧЕНИЯ
Поскольку размер секции неинициализированных данных до фазы редактирования внешних связей не известен, команда size может выдавать неверный общий размер объектных файлов, подлежащих сборке.
НАЗВАНИЕ
sleep - приостановка выполнения на заданное время
СИНТАКСИС
sleep время
ОПИСАНИЕ
Команда sleep приостанавливает выполнение на заданное время (в секундах). Используется для того, чтобы выполнить какую-либо команду через определенное время, например
(sleep 105; команда)&
или чтобы выполнять команду с заданной частотой, например
while true do команда sleep 37 done
СМ. ТАКЖЕ
, в Справочнике программиста.
ОГРАНИЧЕНИЯ
Время не должно превышать 65536 секунд.
НАЗВАНИЕ
sleep - приостановка выполнения программы на указанный промежуток времени
СИНТАКСИС
unsigned sleep (seconds) unsigned seconds;
ОПИСАНИЕ
Выполнение процесса приостанавливается на заданное аргументом seconds число секунд. Время фактической приостановки может оказаться меньше заданного по двум причинам:
Планируемые пробуждения процессов происходят в фиксированные секундные интервалы времени, в соответствии с внутренними часами. Любой перехваченный сигнал прерывает "спячку", после чего срабатывает реакция на сигнал.
С другой стороны, фактическое время приостановки может оказаться больше запрошенного из-за того, что система занята другой, более приоритетной деятельностью. Результат функции sleep есть время "недосыпания" (запрошенное время минус фактическое) в случае, если будильник сработал раньше, чем кончилось запрошенное время, или в случае преждевременного пробуждения вследствие перехвата другого сигнала.
Данная функция реализована с помощью установки будильника - сигнал SIGALRM - и приостановки процесса до возникновения этого или других сигналов. Ранее специфицированная реакция на будильник сохраняется и затем восстанавливается. Если вызывающая программа установила будильник до вызова функции sleep, причем на более раннее время, то процесс приостанавливается только до возникновения сигнала будильника. Пользовательская реакция на этот сигнал отрабатывает непосредственно перед возвратом из функции sleep. Если же время приостановки меньше времени, оставшегося до срабатывания будильника, то функция sleep никак не повлияет на будильник.
СМ. ТАКЖЕ
, , .
НАЗВАНИЕ
sno - интерпретатор СНОБОЛа
СИНТАКСИС
sno [ файлы ]
ОПИСАНИЕ
Команда sno - это компилятор и интерпретатор СНОБОЛа (с незначительными отличиями). На вход команде sno подается конкатенация названных файлов и стандартного ввода. Весь входной текст вплоть до оператора, содержащего метку end, считается программой и компилируется. Доступ к остальной части текста можно получить через псевдопеременную syspit.
Sno имеет следующие отличия от СНОБОЛа:
Отсутствует незакрепленный поиск. Тот же самый результат можно получить с помощью следующих конструкций:
a ** b незакрепленный поиск b. a *x* b = x c незакрепленное присваивание
Отсутствуют обратные ссылки.
x = "abc" a *x* x незакрепленный поиск abc.
Определение функций осуществляется в режиме компиляции при помощи (неуникальной) метки define. Выполнение вызова функции начинается с оператора, который следует за define. Функции не могут быть определены в режиме выполнения программы, имя define зарезервировано. Кроме формальных параметров, других автоматических переменных не предусмотрено. Примеры:
define f( ) define f(a, b, c)
Все метки за исключением define (даже end) должны помечать непустой оператор.
Все метки, функции и переменные должны иметь различные имена. В частности, непустой оператор, помеченный end'ом, не может просто называть метку.
Если начало - это метка программы, то стартует выполнение этой программы. В противном случае, выполнение начинается с первого выполняемого оператора; define не является выполняемым оператором.
Встроенные функции отсутствуют.
Скобки в арифметических выражениях необязательны. Поддерживается обычное соглашение о приоритетах. По этой причине арифметические операции / и * должны окаймляться пробелами.
Правая часть присваиваний должна быть непустой.
Для выделения литералов можно использовать как ', так и ".
Псевдопеременная sysppt недоступна.
СМ. ТАКЖЕ
.
SNOBOL, A String Manipulation Language, by D. J. Farber, R. E. Griswold, and I. P. Polonsky, JACM 11 (1964), pp. 21-30.
НАЗВАНИЕ
sort - сортировка и/или слияние файлов
СИНТАКСИС
sort [-c] [-m] [-u] [-o выходной_файл] [-yкилобайт] [-zдлина] [-d] [-f] [-i] [-M] [-n] [-r] [-b] [-tразделитель] [+позиция_1 [-позиция_2]] [файл ...]
ОПИСАНИЕ
Команда sort сортирует строки, входящие во все исходные файлы, и выдает результат на стандартный вывод. Если имена файлов не указаны, или в качестве файла указан -, исходная информация поступает со стандартного ввода.
При упорядочении используется один или несколько ключей сортировки, выделяемых из каждой вводимой строки. По умолчанию ключ сортировки один - вся строка, а порядок является лексикографическим, соответствующим принятой кодировке символов.
Следующие опции изменяют стандартный порядок работы:
-c Проверить, является ли (единственный) исходный файл уже отсортированным. На стандартный вывод ничего не выдается. В стандартный протокол выводится соответствующее сообщение только в случае нарушения упорядоченности строк.
-m Только слияние исходных файлов, которые предполагаются отсортированными.
-u Опция уникальности: из всех совпадающих строк выводить только одну.
-o выходной_файл
Результат направляется не на стандартный вывод, а в выходной_файл, который может совпадать с одним из исходных.
-yкилобайт
Количество дополнительной памяти, используемой командой sort, существенно влияет на скорость ее работы. Если опция -y отсутствует, sort начинает работу, используя область памяти некоторого стандартного размера, а в случае необходимости запрашивает дополнительную память. Если опция -y задана с аргументом, команда sort начинает работу, используя указанное число килобайт памяти, если только не нарушены ограничения сверху или снизу; в этом случае используется соответствующее крайнее значение. Таким образом, указание -y0 гарантирует использование минимального об ема памяти. Опция -y без аргумента задает область памяти максимального размера.
-zдлина
Во время сортировки запоминается размер самой длинной строки, так что для фазы слияния команда sort может отвести буфер нужного размера. Если, в силу действия опций -c или -m, фаза сортировки пропускается, используется некоторый стандартный размер. Наличие строк, превышающих по длине буфер, приводит к аварийному завершению команды. Задание заведомо достаточной длины гарантирует нормальное выполнение слияния.
НАЗВАНИЕ
spline - интерполяция гладкими кривыми
СИНТАКСИС
spline [-a шаг] [-k число] [-n число_интервалов] [-p] [-x нижняя_граница [верхняя_граница]]
ОПИСАНИЕ
Команда spline берет пары чисел со стандартного ввода - абсциссы и ординаты точек. Она выдает на стандартный вывод набор точек, включающий исходные. Точки набора расположены примерно через равные промежутки; они принадлежат кубическому сплайну с непрерывной второй производной. Точек достаточно много для того, чтобы результат работы выглядел гладким.
Распознаются следуюшие опции, каждая как отдельный аргумент:
-a шаг
Автоматическое назначение абсцисс (при вводе задаются только ординаты). Значение шага по умолчанию равно 1. См. также опцию -x.
-k число
Число используется при вычислении граничных значений. По умолчанию число равно 0.
-n число_интервалов
Результирующие точки располагаются так, что число интервалов между крайними значениями x оказывается близким к заданному. По умолчанию число интервалов составляет 100.
-p Делает выходной сплайн замкнутым, то есть производные на концах будут одинаковыми. Первая и последняя точки должны совпадать.
-x нижняя_граница [верхняя_граница]
Обычно границы изменения x устанавливаются в соответствии с исходными данными. При автоматическом назначении абсцисс используется заданная нижняя граница, значение которой по умолчанию равно 0.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
Когда данные не строго монотонны по x, spline воспроизводит исходные данные без добавления новых точек.
ОГРАНИЧЕНИЯ
Имеется ограничение на число исходных точек - 1000.
НАЗВАНИЕ
split - деление файла на части
СИНТАКСИС
split [-порция] [файл [основа]]
ОПИСАНИЕ
Команда split читает файл и записывает его заданными порциями (по умолчанию порция составляет 1000 строк) в набор выходных файлов. Имя первого выходного файла получается из основы добавлением aa, далее в лексикографическом порядке вплоть до zz (максимальное количество выходных файлов - 676). Длина основы не может превышать 12 символов. Если основа не указана, она принимается равной x.
Если входной файл не указан, или вместо его имени стоит -, используется стандартный ввод.
СМ. ТАКЖЕ
, , .
ИМЯ
sputl, sgetl - opгaнизyeт дocтyп к пepeмeнным типa long мaшиннo нeзaвиcимым cпocoбoм
СИНТАКСИС
void sputl(value,buffer) long value; char *buffer;
long sgetl(buffer) char *buffer;
ОПИСАНИЕ
Sputl зaпиcывaeт пo aдpecy buffer пepeмeннyю value типa long. Пopядoк бaйтoв oдинaкoв для вcex мaшин.
Sgetl вoвpaщaeт пepeмeннyю типa long, выбpaннyю пo aдpecy buffer, пpичeм пopядoк бaйтoв в пepeмeннoй cooтвeтcтвyeт paбoчeй ЭBM.
Sputl и sgetl пoзвoляют xpaнить в фaйлe в двoичнoм видe пepeмeнныe типa long бeз пpeoбpaзoвaния в cимвoльный вид.
НАЗВАНИЕ
ssignal, gsignal - программный вариант механизма сигналов
СИНТАКСИС
#include <signal.h>
int (*ssignal (sig, action)) ( ) int sig, (*action) ( );
int gsignal (sig) int sig;
ОПИСАНИЕ
Функции ssignal и gsignal представляют собой программную реализацию механизма передачи сигналов, похожего на тот, что обеспечивается системным вызовом . Эти функции используются стандартной библиотекой языка C, чтобы предоставить пользователю возможность нестандартной обработки ошибочных ситуаций. Функции ssignal и gsignal можно использовать и в иных целях.
Программные сигналы, доступные пользователю, обозначаются целыми числами от 1 до 16 включительно. Выполнение функции ssignal ассоциирует действие, action, с программным сигналом sig; возбуждение сигнала sig осуществляется функцией gsignal. Возбуждение сигнала приводит к выполнению ассоциированного с ним действия.
В качестве первого аргумента функции ssignal передается число, идентифицирующее сигнал, для которого требуется установить действие. Второй аргумент определяет это действие; оно может быть задано как именем функции (определенной пользователем), так и одной из констант SIG_DFL (стандартное действие) или SIG_IGN (игнорирование). Функция ssignal возвращает указатель на функцию, определяющую предыдущее действие, установленное для этого сигнала; если нет ранее установленного действия или номер сигнала некорректен, то возвращается константа SIG_DFL.
Функция gsignal возбуждает сигнал, заданный аргументом sig, при этом:
Если для обработки сигнала sig была установлена пользовательская функция, то сначала восстанавливается стандартная реакция на возбужденный сигнал, а затем вызывается пользовательская функция с аргументом sig. Функция gsignal возвращает значение, переданное ей пользовательской функцией обработки сигнала. Если действием для сигнала sig является SIG_IGN, (сигнал игнорируется), то функция gsignal возвращает 1 и не предпринимает каких-либо других действий. Если действием для сигнала sig является SIG_DFL (стандартная реакция), то функция gsignal возвращает 0 и не предпринимает каких-либо других действий. Если номер сигнала sig не является корректным или для сигнала sig не специфицировано действие, то функция gsignal возвращает значение 0 и не предпринимает каких-либо других действий.
СМ. ТАКЖЕ
, .
ПРИМЕЧАНИЯ
Есть несколько дополнительных сигналов с номерами, выходящими за пределы интервала от 1 до 16. Они используются функциями из стандартной библиотеки языка C для указания ошибочных ситуаций. В результате некоторые номера сигналов за пределами интервала от 1 до 16 являются допустимыми, хотя их использование может конфликтовать с функциями из стандартной библиотеки языка C.
НАЗВАНИЕ
starter - информация о системе UNIX для начинающих пользователей
СИНТАКСИС
[help] starter
ОПИСАНИЕ
Команда справочной службы starter предоставляет следующие пять видов информации о системе UNIX в помощь новым пользователям:
Команды, которые новый пользователь должен выучить в первую очередь. Документы системы UNIX, важные для начинающих. Центры обучения, предлагающие курсы по системе UNIX. Информация по локальному окружению. Средства обучения в ходе сеанса, задействованные в системе UNIX.
Пользователь может либо выбрать один из видов справочной информации, введя указанную в меню букву, либо вернуться в систему, введя q (quit - выйти). В первом случае пользователь получит одну или более страниц информации на указанную тему.
В любой момент диалога со справочной службой пользователь может выполнить команду shell'а [см. ], введя ! и собственно команду. После ее выполнения экран перерисовывается, если команда была введена в ответ на приглашение первого уровня; в противном случае перерисовывается только приглашение.
По умолчанию справочная служба роллирует изображение. Если Вы предпочитаете, чтобы экран очищался перед выводом данных (без роллинга), переменной shell'а SCROLL нужно присвоить значение no и экспортировать ее, чтобы сделать частью окружения. Для этого в пользовательский профайл .profile [см. ] достаточно вставить строку
SCROLL=no; export SCROLL
Чтобы вернуть роллинг, переменной SCROLL нужно присвоить значение yes.
Каждой из команд справочной службы (starter, locate, usage, glossary и help) посвящена отдельная статья настоящего Справочника.
СМ. ТАКЖЕ
, , , , . в Справочнике программиста. в Справочнике администратора.
СЮРПРИЗЫ
Если переменная окружения TERM не установлена, то по умолчанию считается, что работа идет с терминалом типа 450. Список допустимых типов терминалов содержится в файле .
НАЗВАНИЕ
stat - статистическая обработка информации, полезная для графических команд
СИНТАКСИС
имя_узла [опция ...] [файл ...]
ОПИСАНИЕ
Stat - набор команд (узлов), которые могут быть связаны в так называемую статистическую сеть при помощи . Все эти функции располагаются в каталоге /usr/bin/graf [см. ]. Единицей обмена данными между узлами сети служат вектора, то есть последовательности чисел. Ниже, в зависимости от контекста, они иногда называются также выборками, а составляющие их числа - наблюдениями. Числа представляются в форме:
[знак](цифры)(.цифры)[e[знак]цифры]
и интерпретируются обычным образом. Скобки здесь не входят в представление числа, а используются для выделения полей. Никакое поле этого представления само по себе не является обязательным, но по крайней мере одно из полей, заключенных в круглые скобки, должно присутствовать. Любой символ, приходящий в узел и не являющийся частью числа, воспринимается как разделитель.
Узлы сети stat разбиваются на четыре класса:
Преобразователи
Осуществляют покомпонентную обработку векторов, переводя элементы входного вектора в элементы вы ходного вектора.
Операторы
Вычисляют различные статистики вектора (то есть скалярные или векторные функции векторного аргу мента).
Форматизаторы
Осуществляют преобразования форматов.
Генераторы
Порождают вектора по заданным правилам.
Ниже описывается синтаксис каждого из узлов stat. Опциям должен предшествовать символ -. Вообще говоря, опция задается в виде символа, за которым следует значение, например c5. Это интерпретируется как c := 5 (c присваивается значение 5). Для указания ожидаемых типов значений использованы следующие обозначения:
цепочка
Цепочка символов (символы, интерпретируемые shell'ом, должны быть экранированы).
Опции без значений называются флагами.
В описаниях синтаксиса узлов специальные упоминания о файлах опущены, так как все узлы, кроме генераторов, предполагают их наличие и читают из этих файлов исходные данные. Если файл не указан, данные читаются со стандартного ввода.
Опция -c задает количество колонок при выводе. По умолчанию ее значение равно 5.
Преобразователи
НАЗВАНИЕ
stat, fstat - получение статуса файла
СИНТАКСИС
#include <sys/types.h> #include <sys/stat.h>
int stat (path, buf) char *path; struct stat *buf;
int fstat (fildes, buf) int fildes; struct stat *buf;
ОПИСАНИЕ
Аргумент path указывает на маршрутное имя файла. Не требуется наличие прав доступа на чтение, запись и выполнение заданного файла, но все каталоги, перечисленные перед именем файла в маршрутном имени, должны быть доступны на поиск. Системный вызов stat предоставляет информацию о поименованном файле.
Системный вызов fstat предоставляет информацию об открытом файле, задаваемом с помощью дескриптора файла fildes, который возвращается успешно завершенными системными вызовами open, creat, dup, fcntl или pipe.
Аргумент buf является указателем на стуктуру типа stat, в которую помещается информация о файле.
Структура, на которую указывает buf, содержит следующие поля:
ushort st_mode; /* Режим файла [см. ] */ ino_t st_ino; /* Номер описателя файла */ dev_t st_dev; /* Идент. устройства, содержащего каталог с входом в этот файл */ dev_t st_rdev; /* Идент. устройства. Поле определено только для специальных символьных и блочных файлов */ short st_nlink; /* Количество ссылок */ ushort st_uid; /* Идент. владельца файла */ ushort st_gid; /* Идент. группы владельца файла */ off_t st_size; /* Размер файла в байтах */ time_t st_atime; /* Время последнего доступа к файлу */ time_t st_mtime; /* Время последней записи в файл */ time_t st_ctime; /* Время последнего изменения статуса файла */ /* Время измеряется в секундах от 00:00:00 1 января 1970г. по Гринвичу */
st_mode Режим файла согласно определению, данному при описании системного вызова . st_ino Это поле однозначно определяет файл в данной файловой системе. Пара (st_ino, st_dev) однозначно определяет обычные файлы. st_dev Это поле однозначно определяет файловую систему, содержащую файл. Значение поля может использоваться в качестве входного аргумента системного вызова при получении дополнительной информации об этой файловой системе. Никакого другого смысла это поле не имеет. st_rdev Это поле следует использовать только для команд администратора. Оно имеет смысл лишь для специальных блочных и символьных файлов и только в той системе, где файл был сконфигурирован. st_nlink Это поле следует использовать только для команд администратора. st_uid Идентификатор владельца файла. st_gid Идентификатор группы владельца файла. st_size Для обычных файлов это адрес конца файла. Для каналов это текущее количество данных в файле. Для специальных блочных и символьных файлов значение поля не определено. st_atime Время последнего доступа к данным. Это поле изменяется следующими системными вызовами: , , , и . st_mtime Время последней модификации данных. Это поле изменяется следующими системными вызовами: , , , и . st_ctime Время последнего изменения статуса файла. Это поле изменяется следующими системными вызовами: , , , , , , , и .
НАЗВАНИЕ
stat - данные, возвращаемые системным вызовом stat
СИНТАКСИС
#include <sys/types.h> #include <sys/stat.h>
ОПИСАНИЕ
Системные вызовы и fstat(2) возвращают данные, структура которых описана во включаемом файле <sys/ stat.h>. Назначение бит, входящих в поле st_mode, также определяется в этом файле.
Структура, возвращаемая системным вызовом stat:
struct stat { dev_t st_dev; ushort st_ino; ushort st_mode; short st_nlink; ushort st_uid; ushort st_gid; dev_t st_rdev; off_t st_size; time_t st_atime; time_t st_mtime; time_t st_ctime; };
#define S_IFMT 0170000 /* Маска для выделения типа файла */ #define S_IFDIR 0040000 /* Каталог */ #define S_IFCHR 0020000 /* Специальный символьный */ #define S_IFBLK 0060000 /* Специальный блочный */ #define S_IFREG 0100000 /* Обычный файл */ #define S_IFIFO 0010000 /* Именованный канал */ #define S_ISUID 04000 /* Установить идентификатор пользователя при выполнении*/ #define S_ISGID 02000 /* Установить идентификатор группы при выполнении */ #define S_ISVTX 01000 /* Сохранить сегмент команд после завершения выполнения */ #define S_IREAD 00400 /* Право на чтение для вла- дельца */ #define S_IWRITE 00200 /* Право на запись для вла- дельца */ #define S_IEXEC 00100 /* Право на выполнение/поиск для владельца */ #define S_ENFMT S_ISGID /* Флаг разрешения блокировки доступа */ #define S_IRWXU 00700 /* Чтение, запись, выполнение: владелец */ #define S_IRUSR 00400 /* Право на чтение: владелец*/ #define S_IWUSR 00200 /* Право на запись: владелец*/ #define S_IXUSR 00100 /* Право на выполнение: владе- лец */ #define S_IRWXG 00070 /* Чтение, запись, выполнение: группа */ #define S_IRGRP 00040 /* Право на чтение: группа */ #define S_IWGRP 00020 /* Право на запись: группа */ #define S_IXGRP 00010 /* Право на выполнение: группа */ #define S_IRWXO 00007 /* Чтение, запись, выполнение: прочие */ #define S_IROTH 00004 /* Право на чтение: прочие */ #define S_IWOTH 00002 /* Право на запись: прочие */ #define S_IXOTH 00001 /* Право на выполнение: прочие */
СМ. ТАКЖЕ
, .
НАЗВАНИЕ
statd - монитор состояния сети
СИНТАКСИС
/etc/statd [-d debuglevel]
ОПИСАНИЕ
Statd - промежуточная версия монитора состояния сети. Для выполнения функций блокировки и восстановления компонентов NFS statd взаимодействует с .
Информация о состоянии сбоя/восстановления сохраняется в каталоге /etc/sm. Файл record содержит имена машин (клиентов) для всех отслеживаемых систем. Файл recover содержит аналогичные имена для тех систем, которые еще не уведомлены об отказе statd, а файл state - номер текущей версии statd.
Опции:
-d debuglevel Команда statd имеет расширенные внутренние возможности в области формирования отчетов. Уровень 2 соответствует сигнализированию о существенных событиях. Уровень 4 сообщает о внутреннем состоянии и совокупном трафике.
ФАЙЛЫ
/etc/sm/record /etc/sm/recover /etc/sm/state
СМ. ТАКЖЕ
, statmon(3)
НАЗВАНИЕ
statfs, fstatfs - получение информации о файловой системе
СИНТАКСИС
#include <sys/types.h> #include <sys/statfs.h>
int statfs (path, buf, len, fstyp) char *path; struct statfs *buf; int len, fstyp;
int fstatfs (fildes, buf, len, fstyp) int fildes; struct statfs *buf; int len, fstyp;
ОПИСАНИЕ
Системный вызов statfs возвращает "родовой суперблок", описывающий файловую систему. Вызов может использоваться для запроса информации как о смонтированной, так и о несмонтированной файловой системе; использование вызова несколько различается в этих двух случаях. В обоих случаях аргумент buf является указателем на структуру (описываемую ниже), поля которой заполняются в результате выполнения системного вызова, а аргумент len задает количество байт информации, которые система должна поместить в структуру. Значение len не должно превышать размер структуры: sizeof (struct statfs) и обычно len содержит именно этот размер; если аргумент len содержит меньшее значение, то система поместит в структуру ровно заданное количество байт, что дает возможность в более поздних версиях добавлять к структуре statfs новые поля без перетрансляции старых программ.
Если исследуемая файловая система в текущий момент смонтирована, то маршрутное имя path должно быть именем файла, который располагается в данной файловой системе. В этом случае тип файловой системы известен ОС, и аргумент fstyp должен быть нулевым. Для несмонтированной файловой системы маршрутное имя path должно быть именем специального блочного файла, содержащего ее, и аргумент fstyp должен содержать (ненулевой) тип файловой системы. В обоих случаях право доступа на чтение, запись или выполнение названного файла не требуется, но все каталоги, перечисленные в маршрутном имени, должны быть доступны на поиск.
Структура statfs, на которую указывает аргумент buf, состоит из следующих полей:
short f_fstyp; /* Тип файловой системы */ short f_bsize; /* Размер блока */ short f_frsize; /* Размер сегмента */ long f_blocks; /* Общее количество блоков */ long f_bfree; /* Счетчик свободных блоков */ long f_files; /* Общее кол-во описателей файлов */ long f_ffree; /* Счетчик свобод. описат. файлов */ char f_fname [6]; /* Имя тома */ char f_fpack [6]; /* Имя пакета */
НАЗВАНИЕ
Структуры файлов и каталогов statd
СИНТАКСИС
/etc/sm/record, /etc/sm/recover, /etc/sm/state
ОПИСАНИЕ
Файлы /etc/sm/record и /etc/sm/recover генерируются процессом statd. Каждое host-имя в /etc/sm/record представляет собой имя машины, управляемой процессом statd. Каждое host-имя в /etc/sm/recover представляет собой имя машины, на которую ссылается процесс statd при восстановлении.
Файл /etc/sm/state генерируется процессом statd для записи номера его версии. Этот номер увеличивается на единицу при каждом сбое или восстановлении.
СМ. ТАКЖЕ
,
НАЗВАНИЕ
stdio - стандартный пакет буферизованного ввода/вывода
СИНТАКСИС
#include <stdio.h>
FILE *stdin, *stdout, *stderr;
ОПИСАНИЕ
Макросы и функции, относящиеся к разделу 3S этого Справочника, предоставляют пользователю эффективные средства буферизованного ввода/вывода. Макросы и служат для быстрого ввода/вывода символов. Макросы getchar и putchar и функции более высокого уровня fgetc, fgets, fprintf, fputc, fputs, fread, fscanf, fwrite, gets, getw, printf, puts, putw и scanf ведут себя так, как если бы они использовали getc и putc. Обращения к макросам и функциям из данного пакета можно чередовать произвольным образом.
Файл и ассоциированный с ним механизм буферизации называются потоком. Поток описывается как указатель на переменную типа FILE. Функция создает описатель потока и возвращает указатель на него. Этот указатель идентифицирует поток во всех последующих операциях. Обычно имеются три открытых потока с постоянными указателями, они описаны во включаемом файле <stdio.h> и связаны со стандартными открытыми файлами:
stdin стандартный ввод stdout стандартный вывод stderr стандартный протокол
Константа NULL (0) обозначает пустой указатель.
Целая константа EOF (-1) возвращается по достижении конца файла или в случае ошибки большинством из целочисленных функций, работающих с потоками (для получения детальной информации см. описания отдельных функций).
Целая константа BUFSIZ специфицирует размер буферов, используемых в конкретной реализации.
Любая программа, использующая данный пакет ввода/вывода, должна включать файл соответствующих макроопределений следующим образом:
#include <stdio.h>
Функции и константы, упоминаемые в разделе 3S этого руководства, описаны в файле <stdio.h> и не требуют дальнейшего описания. Константы и следующие "функции" реализованы как макросы (переопределение этих имен опасно): getc, getchar, putc, putchar, ferror, feof, clearerr и fileno.
Потоки вывода, за исключением стандартного протокола stderr, по умолчанию буферизуются, если вывод производится в файл, и буферизуется построчно, если вывод производится на терминал. Стандартный протокол stderr по умолчанию не буферизуется, но использование функции freopen [см. ] приводит к тому, что стандартный протокол становится буферизованным или буферизованным построчно. Когда поток вывода не буферизован, данные выводятся в нужный файл или на терминал по мере поступления запросов на запись; когда поток вывода буферизован, байты накапливаются и записываются блоком. Когда поток вывода буферизован построчно, каждая выводимая строка выводится на терминал после заполнения строки (то есть как только выводится символ перевода строки или поступает запрос на ввод с терминала). Функции setbuf или setvbuf [см. ] могут использоваться для изменения стратегии буферизации потоков.
СМ. ТАКЖЕ
, , , , , , , , , , , , , , , , , , , , , , , , .
ДИАГНОСТИКА
Некорректный указатель на поток обычно приводит к тяжелым последствиям, возможно, к терминированию программы. Описания конкретных функций включают раз яснения возможных ошибочных ситуаций.
НАЗВАНИЕ
stime - установка системных часов
СИНТАКСИС
int stime (tp) long *tp;
ОПИСАНИЕ
Системный вызов stime устанавливает системное время и дату. Параметр tp является указателем на величину, заданную в секундах от 00:00:00 1 января 1970 года (по Гринвичу).
[EPERM] Данный вызов разрешен только суперпользователю.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
НАЗВАНИЕ
strace - трассировка сообщений псевдоустройств
СИНТАКСИС
strace [ид_модуля ид_устройства уровень] ...
ОПИСАНИЕ
Утилита strace, будучи вызванной без аргументов, записывает на стандартный вывод все трассировочные сообщения псевдоустройств от всех драйверов и модулей. Эти сообщения поставляются драйвером регистрации ошибок и трассировки событий псевдоустройств [см. ]. Если указаны аргументы, то они должны составлять тройки (ид_модуля ид_устройства уровень), где ид_модуля идентификатор модуля псевдоустройства, ид_устройства идентификатор устройства, уровень - уровень приоритета трассировки. Каждая тройка указывает, что трассировочные сообщения поступают от указанного модуля/драйвера, устройства (обычно в качестве идентификатора устройства задается его младший номер) и с уровнем приоритета, меньшим или равным указанному. Задание слова all на любом из трех мест означает отсутствие соответствующего ограничения.
Трассировочные сообщения имеют следующий формат:
номер время время_от_загрузки уровень флаги ид_модуля ид_устр-ва текст
где
Будучи запущенной, программа strace выполняется до тех пор, пока ее не терминирует пользователь.
ПРИМЕРЫ
Выводить все трассировочные сообщения от драйвера с идентификатором 41:
strace 41 all all
Выводить трассировочные сообщения от драйвера с идентификатором 41, устройств 0, 1 и 2:
strace 41 0 1 41 1 1 41 2 0
Сообщения от устройств 0 и 1 должны иметь уровень трассировки, меньший или равный 1. Сообщения от устройства 0 и 1 должны иметь уровень трассировки, равный 0.
ОГРАНИЧЕНИЯ
Только один процесс strace может открыть драйвер регистрации ошибок и трассировки событий псевдоустройств. Указанный драйвер хранит список троек, указанных в команде, и каждое сообщение сравнивает с этим списком, определяя, не нужно ли его отформатировать и передать strace. Таким образом, длинный список троек может замедлить операции над псевдоустройствами. Наибольшее влияние strace оказывает на время выполнения операций над теми псевдоустройствами, которые трассируются. Если трассировочные сообщения генерируются с большей частотой, чем может обработать strace, часть сообщений будет потеряна. Потерю сообщений можно определить по пропускам в порядковых номерах выдаваемых сообщений.
СМ. ТАКЖЕ
.
НАЗВАНИЕ
strclean - очистка протоколов об ошибках псевдоустройств
СИНТАКСИС
strclean [-d каталог] [-a возраст]
ОПИСАНИЕ
Утилита strclean используется для регулярной чистки каталога регистрации ошибок и трассировки событий псевдоустройств [например, через ]. По умолчанию, удаляются все файлы, имена которых удовлетворяют шаблону error.* в каталоге /usr/adm/streams, не модифицировавшиеся за последние 3 дня. Каталог, в котором производится удаление, может быть изменен опцией -d. Возраст удаляемых файлов в днях может быть изменен опцией -a.
ПРИМЕР
Командная строка
strclean -d /usr/adm/streams -a 3
дает тот же эффект, что и вызов утилиты strclean без аргументов.
ЗАМЕЧАНИЯ
Обычно strclean запускается через ежедневно или еженедельно.
ФАЙЛЫ
/usr/adm/streams/error.*
СМ. ТАКЖЕ
, .
НАЗВАНИЕ
streamio - управление псевдоустройствами
СИНТАКСИС
#include <stropts.h>
int ioctl (fildes, command, arg) int fildes, command;
ОПИСАНИЕ
Управление псевдоустройствами [см. ] выполняется с помощью системного вызова , осуществляющего операции над потоками. Аргументы command и arg передаются в поток, определяемый дескриптором файла fildes и интерпретируются его истоком. Некоторые комбинации аргументов передаются далее модулям или драйверам потока.
Аргумент fildes - это дескриптор открытого файла, определяющий поток. Аргумент command задает выполняемую команду, как описано ниже. Аргумент arg задает дополнительные аргументы для этой команды. Тип аргумента arg зависит от команды. Обычно это int или указатель на какую-либо структуру.
Поскольку управление псевдоустройствами осуществляется с помощью системного вызова , ошибки, описанные в , относятся и к управлению псевдоустройствами. В дополнение к этим ошибкам системный вызов может закончиться неудачей, а переменная errno получит значение EINVAL, если поток, определяемый дескриптором файла, мультиплексируется, либо аргумент command имеет значение, не применимое к этому потоку.
Ошибки могут обнаруживаться модулями и драйверами псевдоустройств. В этом случае модуль или драйвер посылает сообщение, содержащее код ошибки, истоку потока, переменной errno присваивается значение, равное посланному коду ошибки, а соответствующий системный вызов завершается неудачей.
Следующие команды системного вызова применимы ко всем псевдоустройствам.
I_PUSH Помещает модуль, на имя которого указывает аргумент arg, на вершину потока, определяемого аргументом fildes, сразу под истоком. Затем вызывается процедура открытия помещенного модуля. При неудаче переменная errno принимает одно из следующих значений:
[EINVAL] Некорректное имя модуля. [EFAULT] Аргумент arg указывает за пределы отведенного процессу адресного пространства. [ENXIO] Ошибка в процедуре открытия помещенного модуля. [ENXIO] В потоке произошло освобождение линии.
НАЗВАНИЕ
strerr - демон регистрации ошибок псевдоустройств
СИНТАКСИС
strerr
ОПИСАНИЕ
Утилита strerr получает сообщения от драйвера регистрации ошибок и трассировки событий псевдоустройств [см. ] и записывает их в файл протокола. Файлы протокола создаются в каталоге /usr/adm/streams и имеют имена error.мм-дд, где мм - месяц, а дд - день посылки сообщения, запись о котором содержится в этом файле.
Сообщения в протоколе имеют следующий формат:
номер время время_от_загрузки уровень флаги ид_модуля ид_устр-ва текст
где
Сообщения, которые появляются в протоколе, предназначены для регистрации исключительных ситуаций, требующих внимания системного администратора. Сообщения, которые означают аварию в драйвере или модуле псевдоустройства, помечаются флагом F. Сообщения, которые требуют немедленной реакции администратора помечаются флагом N и приводят к посылке письма администратору через почтовую службу . Уровень приоритета имеет смысл, только если сообщение послано еще и процессу трассировки.
Будучи запущенной, утилита strerr выполняется до тех пор, пока ее не терминирует пользователь. Обычно strerr выполняется асинхронно.
ОГРАНИЧЕНИЯ
Только один процесс strerr может открыть драйвер регистрации ошибок и трассировки событий псевдоустройств. Если модуль или драйвер генерирует большое количество сообщений об ошибках, включение их регистрации приводит к замедлению работы с псевдоустройствами. Если большое количество ошибок возникает в течение короткого времени, драйвер регистрации ошибок может не успеть обработать все ошибки. Эту ситуацию можно обнаружить по пропускам в нумерации сообщений в протоколе.
ФАЙЛЫ
/usr/adm/streams/error.мм-дд
СМ. ТАКЖЕ
.
НАЗВАНИЕ
string: strcat, strncat, strdup, strcmp, strncmp, strcpy, strncpy, strlen, strchr, strrchr, strpbrk, strspn, strcspn, strtok - операции с цепочками символов
СИНТАКСИС
#include <string.h>
#include <sys/types.h>
char *strcat (s1, s2) char *s1, *s2;
char *strncat (s1, s2, n) char *s1, *s2; size_t n;
char *strdup (s1) char *s1;
int strcmp (s1, s2) char *s1, *s2;
int strncmp (s1, s2, n) char *s1, *s2; size_t n;
char *strcpy (s1, s2) char *s1, *s2;
char *strncpy (s1, s2, n) char *s1, *s2; size_t n;
int strlen (s) char *s;
char *strchr (s, c) char *s; int c;
char *strrchr (s, c) char *s; int c;
char *strpbrk (s1, s2) char *s1, *s2;
int strspn (s1, s2) char *s1, *s2;
int strcspn (s1, s2) char *s1, *s2;
char *strtok (s1, s2) char *s1, *s2;
ОПИСАНИЕ
Аргументы s1, s2 и s представляют собой указатели на цепочки символов, завершающиеся нулевым байтом. Ниже для краткости вместо выражения "цепочка, указателем на которую служит s1" употребляется выражение "цепочка s1" или просто "s1".
Каждая из функций strcat, strncat, strcpy и strncpy изменяет цепочку s1. Эти функции не осуществляют проверку переполнения массива, на который указывает s1.
Функция strcat подцепляет копию цепочки s2 к концу цепочки s1. Функция strncat подцепляет не более n символов. Каждая из них возвращает указатель на результат, завершающийся нулевым байтом.
Функция strdup возвращает указатель на новую цепочку, представляющую собой дубликат цепочки s1. Память под новую цепочку отводится путем обращения к функции . При нехватке памяти, когда новая цепочка не может быть создана, функция strdup возвращает пустой указатель NULL.
Функция strcmp сравнивает свои аргументы и возвращает целое число, меньшее нуля, равное ему или большее него в соответствии с тем, предшествует ли цепочка s1 лексикографически цепочке s2, совпадает с ней, или следует за ней. Функция strncmp осуществляет такое же сравнение, но принимает во внимание не более n первых символов.
Функция strcpy осуществляет копирование цепочки s2 в s1, прекращая его сразу после того, как скопирован нулевой байт. Функция strncpy осуществляет копирование в точности n символов, при необходимости усекая s2 или добавляя нулевые байты в s1. Результат не будет завершаться нулевым байтом, если s2 имеет длину n или более. Обе функции возвращают указатель s1.
Функция strlen возвращает число символов, содержащихся в цепочке s, не считая завершающего нулевого байта.
Функция strchr (strrchr) возвращает значение указателя на первое (последнее) вхождение символа c в цепочку s, либо значение NULL, если цепочка этого символа не содержит. Завершающий нулевой байт цепочки рассматривается при этом как ее составная часть.
Функция strpbrk возвращает значение указателя на первое вхождение в цепочку s1 какого-либо символа из цепочки s2, либо значение NULL, если цепочка s1 не содержит символов из цепочки s2.
Функция strspn (strcspn) возвращает длину начального фрагмента цепочки s1, состоящего из символов, которые содержатся (не содержатся) в цепочке s2.
Функция strtok рассматривает цепочку s1, как состоящую из некоторого (быть может, нулевого) числа лексем, отделенных друг от друга одним или несколькими символами из набора разделителей s2. При первом вызове (с заданным s1) возвращается указатель на первый символ первой лексемы, а в цепочку s1 сразу, вслед за найденной лексемой, записывается нулевой байт. Функция отслеживает его положение в цепочке от вызова к вызову, так что последующие вызовы (при которых значение первого аргумента должно задаваться как NULL) будут работать с фрагментом цепочки s1, непосредственно следующим за этой лексемой. Таким образом, за несколько вызовов цепочка s1 будет просмотрена и все лексемы исчерпаны. Цепочка разделителей s2 может меняться от вызова к вызову. По исчерпании лексем функцией strtok будет возвращено значение NULL.
Для удобства пользователя все эти функции описаны во включаемом файле <string.h>.
СМ. ТАКЖЕ
, .
ОГРАНИЧЕНИЯ
Функции strcmp и strncmp используют аппаратное сравнение символов. Поэтому результаты сравнения цепочек, содержащих символы со старшим битом, равным единице, машинно-зависимы. В данной системе подобные символы трактуются как отрицательные числа.
Так как пересылка символов осуществляется по-разному в различных реализациях, перекрытие областей памяти может привести к неожиданным результатам.
НАЗВАНИЕ
strip - удаление из объектного файла таблицы имен и информации о номерах строк
СИНТАКСИС
strip [-l] [-x] [-b] [-r] [-V] файл ...
ОПИСАНИЕ
Команда strip удаляет из объектных файлов (в том числе и архивов) таблицу имен и информацию о номерах строк. После выполнения команды strip указанный файл не допускает символьной отладки; данная команда предназначается в первую очередь для отлаженных модулей.
Количеством информации, удаляемой из файла, можно управлять с помощью следующих опций:
Если опция -r не указана, а в объектном файле есть настраиваемые ссылки и надо удалить какую-либо информацию из таблицы имен, strip сообщит о невозможности выполнения задания и завершит работу.
При выполнении команды strip над архивом [см. ], таблица имен архива удаляется. Эта таблица должна быть восстановлена с помощью команды ar -s, прежде чем архив можно будет использовать для редактирования связей командой . При возникновении данной ситуации команда выдает предупреждение.
Назначение команды strip - уменьшить об ем дисковой памяти, занимаемой объектным файлом.
ФАЙЛЫ
TMPDIR/strp* Временные файлы.
Обычно каталог TMPDIR - это /usr/tmp, однако данное соглашение можно изменить, присвоив переменной окружения TMPDIR другое значение [см. tempnam( ) в ].
СМ. ТАКЖЕ
, , , .
, a.out(4), в Справочнике программиста.
ДИАГНОСТИКА
strip: файл: cannot open
Файл не удается открыть.
strip: файл: bad magic
Файл не является объектным файлом обычного формата.
strip: файл: relocation entries present; cannot strip
Файл содержит настраиваемые ссылки и делается попытка удалить информацию из таблицы имен, не указав опцию -r.
НАЗВАНИЕ
strtod, atof - преобразование цепочки символов в вещественное число двойной точности
СИНТАКСИС
double strtod (str, ptr) char *str, **ptr;
double atof (str) char *str;
ОПИСАНИЕ
Результатом функции strtod является вещественное число двойной точности, заданное цепочкой символов, на которую указывает аргумент str. Цепочка просматривается до первого нераспознаваемого символа.
Функция strtod распознает: последовательность пробельных символов [см. макрос isspace в ], знак числа, цепочку цифр, содержащую необязательную точку, и порядок, состоящий из символа e или E, необязательного знака порядка или пробела, и целого числа. Часть перечисленных компонентов может отсутствовать.
Если аргумент ptr не равен (char **) NULL, то в слове, на которое он ссылается, возвращается указатель на символ, вызвавший завершение просмотра. Если число сформировать не удается, то *ptr устанавливается равным str, и в качестве результата возвращается ноль.
Atof (str) эквивалентно strtod (str, (char **) NULL).
СМ. ТАКЖЕ
, , .
ДИАГНОСТИКА
Если преобразованное число переполняет разрядную сетку, то возвращается, в зависимости от знака числа, значение +HUGE или -HUGE [см. ], а переменной errno присваивается значение ERANGE. В случае исчезновения порядка возвращается ноль и errno присваивается значение ERANGE.
НАЗВАНИЕ
strtol, atol, atoi - преобразование цепочки символов в целое число
СИНТАКСИС
long strtol (str, ptr, base) char *str, **ptr; int base;
long atol (str) char *str;
int atoi (str) char *str;
ОПИСАНИЕ
Результатом функции strtol является целое число типа long, заданное цепочкой символов, на которую указывает аргумент str. Цепочка просматривается до первого символа, несовместимого с выбранной системой счисления. Начальные пробельные символы [см. макрос isspace в ] игнорируются.
Если аргумент ptr не равен (char **) NULL, то в слове, на которое он ссылается, возвращается указатель на символ, вызвавший завершение просмотра. Если число сформировать не удается, то *ptr устанавливается равным str и в качестве результата возвращается ноль.
Если аргумент base положителен (и не превосходит 36), то он рассматривается как основание системы счисления. После необязательного знака могут следовать незначащие нули, которые игнорируются, а если основание равно 16, то игнорируются комбинации символов 0x и 0X.
Если аргумент base равен нулю, то основание определяется по составу символов цепочки: если после необязательного знака находится символ 0, то число считается восьмеричным, если 0x или 0X - то шестнадцатеричным, если любая другая цифра - десятичным.
Atol (str) эквивалентно strtol (str, (char **) NULL, 10).
Atoi (str) эквивалентно (int) strtol (str, (char **) NULL, 10).
СМ. ТАКЖЕ
, , .
СЮРПРИЗЫ
Переполнение игнорируется.
НАЗВАНИЕ
stty - установка характеристик терминала
СИНТАКСИС
stty [-a] [-g] [характеристика ...]
ОПИСАНИЕ
Команда stty устанавливает определенные характеристики терминального ввода/вывода для устройства, являющегося стандартным вводом; команда без аргументов выдает некоторые из установленных характеристик. При этом знак ^ обозначает управляющий символ (^c - это то же самое, что CTRL+C), а сочетание ^` соответствует пустому значению. Например, обычно команда stty сообщает, что значение swtch равно ^`, однако если вызвать , то stty выдаст значение ^z.
Опциям команды stty приписан следующий смысл:
Характеристики последней группы (ниже перечислены несколько групп) реализованы с помощью характеристик из предыдущих групп. Заметим, что многие комбинации характеристик не имеют смысла, тем не менее никакой проверки корректности не производится. Характеристики выбираются из следующего набора:
Управляющие характеристики
parenb (-parenb) Разрешить (запретить) контроль по четности.
parodd (-parodd) Установить режим проверки на нечетность (четность).
cs5 cs6 cs7 cs8 Установить размер символа [см. ].
0 Немедленное освобождение телефонной линии.
110 300 600 1200 1800 2400 4800 9600 19200 38400
Установить указанную скорость передачи, если это возможно. (Не все аппаратные интерфейсы поддерживают все скорости передачи.)
hupcl (-hupcl) Освобождать (не освобождать) линию Dataphone при закрытии линии последним процессом, открывавшим ее.
hup (-hup) То же самое, что и hupcl (-hupcl).
cstopb (-cstopb) Использовать два (один) стоп-бита на символ.
cread (-cread) Разрешить (запретить) прием символов.
clocal (-clocal) Предполагать, что линия без (с) модемного управления.
loblk (-loblk) Блокировать (не блокировать) вывод экземпляра shell'а, не являющегося текущим.
Характеристики ввода
ignbrk (-ignbrk) Игнорировать (не игнорировать) прерывание при вводе.
brkint (-brkint) При прерывании выдавать (не выдавать) сигнал SIGINT (2).
ignpar (-ignpar) Игнорировать (не игнорировать) ошибки четности.
parmrk (-parmrk) Отмечать (не отмечать) ошибки четности [см. ].
inpck (-inpck) Разрешить (запретить) контроль четности ввода.
istrip (-istrip) Обрезать (не обрезать) вводимые символы до семи бит.
inlcr (-inlcr) Преобразовывать (не преобразовывать) при вводе перевод_строки в возврат_каретки.
igncr (-igncr) Игнорировать (не игнорировать) при вводе символ возврат_каретки.
icrnl (-icrnl) Преобразовывать (не преобразовывать) при вводе возврат_каретки в перевод_строки.
iuclc (-iuclc) Преобразовывать (не преобразовывать) при вводе большие буквы в малые.
ixon (-ixon) Разрешить (запретить) управление выводом в режиме СТАРТ/СТОП. Вывод приостанавливается с помощью посылки символа ASCII DC3 (^S) и продолжается после посылки символа ASCII DC1 (^Q).
ixany (-ixany) Разрешить любому символу (только DC1) вызывать продолжение вывода.
ixoff (-ixoff) Требование, чтобы система посылала (не посылала) символы СТАРТ/СТОП в ситуации, когда очередь вводимых символов почти пуста/заполнена.
ИМЯ
su - присваивает пользователю статус привилегированного пользователя или имя другого пользователя.
СИНТАКСИС
su [-] [name [arg...]]
ОПИСАНИЕ
Команда su позволяет вам становиться другим пользователем без логического отключения. По умолчанию имя пользователя name root (т.е. привилегированный пользователь).
Для того, чтобы использовать su, необходимо ввести соответствующий пароль (до этого пароль - root). Если пароль правильный, su выполнит новый shell с истинным и действительным идентификатором пользователя, с истинным и действительным идентификатором группы пользователей. Новый shell будет необязательной программой с именем, указанным в поле shell (поле shell является частью компонента специфицированного файла пользовательских паролей), или с именем /bin/sh, если имя не задано. Для возврата к обычным привилегиям идентификатора пользователя наберите EOF (Ctrl-D) в новом shell.
Любые дополнительные аргументы, задаваемые в командной строке, поступают в программу, вызванную как shell. Когда используются программы подобно , аргумент arg вида -c string обрабатывает значение string через shell, а аргумент вида -r предоставляет пользователю ограниченный shell.
Текущие предложения справедливы только тогда, когда необязательная программа с именем, указанным в поле shell компонента файла пользовательских паролей, идеинтична команде . Если первый аргумент команды su '-', то конфигурация системы будет изменена и приведена в ожидаемое состояние, если пользователь действительно зарегистрирован как определенный пользователь. Это сделано путем вызова программы, используемой как shell, со значением arg0, у которого первый знак '-', вызывая, тем самым, выполнение сначала системных параметров (/etc/profile), а затем указанных пользовательских параметров (.profile в новой директории HOME). В противном случае, конфигурация остается неизменной, кроме значения $PATH, которое безусловно устанавливается как /bin:/etc:/usr/bin для имени пользователя root. Необходимо заметить, что если необязательная программа, используемая как shell, имеет имя /bin/sh, то пользовательский .profile может проверить аргумент arg0 на наличие -sh или -su, чтобы обнаружить, вызывалась ли данная программа командами login(5) или , соответственно. Если пользовательская программа отлична от /bin/sh, то пользовательский .profile вызывается с аргументом arg0, равным -program, и командой login(5), и командой .
Файл /etc/default/su может быть использован для управления ходом выполнения команды su. В этом файле может быть размещено несколько флагов:
НАЗВАНИЕ
sum - подсчет контрольной суммы и количества блоков в файле
СИНТАКСИС
sum [-r] файл
ОПИСАНИЕ
Команда sum вычисляет и выводит 16-битную контрольную сумму для указанного файла; кроме того, выдается количество блоков в файле. Команда, как правило, используется для обнаружения повреждений или для проверки правильности передачи файла по линии связи. Если указана опция -r, то для вычисления контрольной суммы используется альтернативный алгоритм.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
На большинстве устройств ошибка чтения воспринимается как конец файла; проверьте количество блоков.
НАЗВАНИЕ
svs - запуск системы SVS FORTRAN
СИНТАКСИС
/util/svs [+a] [-a] [+b] [-b] [+c72] [+charequ] [+d] [-d] [+dc] [-dc] [ [+eфайл] [+f] [-f] [+int2] [+iфайл] [+log2] [+lфайл] [+p] [-p] [+q] [+x] файл ...
ОПИСАНИЕ
/util/svs является shell-процедурой для запуска системы SVS FORTRAN.
Входной язык системы SVS FORTRAN является стандартным Фортраном-77. Компиляция SVS-программ обычно проходит в четыре фазы: получение промежуточного кода, получение объектного кода SVS, получение объектного файла обычного формата, получение выполняемой программы. Для получения выполняемой программы необходимо, чтобы были доступны библиотеки libSVSf.a и libSVSp.a.
Файлы с исходными текстами должны иметь расширение .for. Файл с промежуточным кодом имеет расширение .i (см. ниже опцию -i).
Кроме обычных операторов Фортрана, в исходном тексте могут присутствовать указания компилятору, характеризующиеся символом $ в первой позиции. Перечислим их.
$argcheck, $noargcheck
Трактовать несоответствие формальных и фактических параметров как фатальную ошибку или как предупреждение. Если задана опция +a (только ANSI), то независимо от указаний компилятору несоответствие параметров рассматривается как ошибка.
$binary, $notbinary
Директива позволяет программам, использующим ныне устаревшие "чистые" бесформатные файлы, работать под более новыми версиями системы. Если перед оператором OPEN указана директива $binary, то файл типа UNFORMATTED трактуется как файл типа BINARY. При указании $notbinary UNFORMATTED трактуется как тип файла в соответствии со стандартом ANSI, но файл будет содержать управляющие последовательности и символы конца записи.
$charequ
Разрешить связывать отношением EQUIVALENCE переменные числовых и символьных типов.
$col72
Обрезать входные строки до 72 символов. По умолчанию строки обрезаются до 120 символов. Кроме того, действует ограничение на суммарное количество символов в операторе - 1360, что соответствует 20 строкам по 66 символов.
$debug
Включить/выключить генерацию таблицы для отладчика SVS.
$f66do
НАЗВАНИЕ
swab - перестановка байт
СИНТАКСИС
void swab (from, to, nbytes) char *from, *to; int nbytes;
ОПИСАНИЕ
Функция swab копирует nbytes байт из массива, на который указывает from, в массив, на который указывает to, меняя местами смежные четный и нечетный байты. Аргумент nbytes должен быть четным и неотрицательным. Если этот аргумент нечетный и положительный, копируется nbytes-1 байт. Если он отрицателен, ничего не копируется.
НАЗВАНИЕ
swap - управление областями подкачки
СИНТАКСИС
/etc/swap [-a устройство начальный_блок длина] [-d устройство начальный_блок] [-l]
ОПИСАНИЕ
Команда swap обеспечивает добавление, удаление и отображение системных областей подкачки, используемых диспетчером памяти. При выполнении команды swap следует указывать ровно одну из следующих опций:
-a устройство начальный_блок длина
Добавить область подкачки. Устройство должно быть блочным, например /dev/dsk/hd0s2. Начальный_блок и длина задают расположение области подкачки на устройстве. Длина задается в блоках, размер блока считается равным 1Кбайт. Данную опцию может применять только суперпользователь. Обычно области подкачки добавляются при переходе в многопользовательский режим.
-d устройство начальный_блок
Удалить указанную область подкачки. Смысл аргументов устройство и начальный_блок тот же, что и в случае опции -a. Область подкачки отмечается флагом INDEL (как находящаяся в процессе удаления). Система не занимает новых блоков в этой области и пытается освободить занятые. Область продолжает использоваться, пока в ней есть занятые блоки. Данную опцию может применять только суперпользователь. -l Выдать состояние всех областей подкачки. Данные выводятся в 5 колонок:
Path - маршрутное имя специального файла-устройства, содержащего область подкачки.
Dev - Старший и младший номера устройства.
Low - начальный блок области подкачки на устройстве. Размер блока считается равным 1Кбайт.
Len - длина области подкачки в блоках.
Free - число свободных блоков в области подкачки.
ФАЙЛЫ
/etc/swapon Начальное определение области подкачки.
ПРЕДОСТЕРЕЖЕНИЯ
Перекрытие добавленной области подкачки с существующими областями и файловыми системами не проверяется.
НАЗВАНИЕ
swapadd - yкaзывaeт дoпoлнитeльныe ycтpoйcтвa для cтpaничнoй opгaнизaции пaмяти и cвoпингa
ОПИСАНИЕ
Дaннaя кoмaндa мoжeт быть выпoлнeнa тoлькo в XENIX-386. Для пoдpoбнoй инфopмaции пo этoй кoмaндe cмoтpи XENIX-386 Release Notes (Ocoбeннocти peaлизaции).
НАЗВАНИЕ
swapctl - Oпpeдeлeниe ycтpoйcтв для cтpaничнoй пoдкaчки и cвoпингa.
ОПИСАНИЕ
Этa кoмaндa дeйcтвитeльнa тoлькo в XENIX-386. Ecли y вac XENIX-386, cм. Release Notes, гдe пpeдcтaвлeнa пoлнaя инфopмaция пo этoмy вoпpocy.
НАЗВАНИЕ
sxt - драйвер виртуального терминала
ОПИСАНИЕ
Sxt представляет собой дополнительный драйвер, который располагается между драйвером верхнего уровня, единым для всех терминальных линий, и драйвером конкретного устройства. Драйвер верхнего уровня выполняет операции над виртуальными устройствами, а sxt служит посредником при передаче этих операций на реальные устройства. Драйвер sxt в настоящее время используется только командой .
Виртуальным терминалам соответствуют файлы в каталоге /dev/sxt, которые образуют группы по 8. Чтобы начать работу с группой, программа должна открыть файл вида /dev/sxt/??0 (так называемый канал 0) с флагом O_EXCL, после чего выполнить команду SXTIOCLINK системного вызова для начала мультиплексирования.
Ввод с клавиатуры может доставаться только одному каналу из группы, так называемому "управляющему". Процессы, пытающиеся читать по другим каналам, будут блокированы.
Драйвер sxt поддерживает две группы команд системного вызова . Первая группа включает все стандартные команды ioctl, описанные в , со следующим добавлением:
TIOCEXCL Установить исключительный доступ: до тех пор, пока файл не будет закрыт, все попытки его открыть отвергаются. TIOCNXCL Отменить исключительный доступ: разрешается несколько раз открывать файл.
Вторая группа включает команды для самого драйвера sxt. Некоторые из них могут выполняться только для канала 0.
SXTIOCLINK Создать группу каналов и начать мультиплексированное отображение виртуальных терминалов на реальный. Аргументом является количество создаваемых каналов. Эту команду можно выполнить только на канале 0. Возможны следующие ошибки:
[EINVAL] Значение аргумента некорректно. [ENOTTY] Команда выдана не с реального терминала. [ENXIO] В системе нет драйвера sxt. [EBUSY] Команда SXTIOCLINK уже была выдана для данного реального терминала. [ENOMEM] Не хватает памяти для структур виртуальных терминалов. [EBADF] Канал 0 не был предварительно открыт.
SXTIOCSWTCH Установить "управляющий" канал. Возможны следующие ошибки:
НАЗВАНИЕ
syms - формат таблицы имен в обычном об ектном файле
СИНТАКСИС
#include <syms.h>
ОПИСАНИЕ
Объектные файлы обычного формата содержат информацию для поддержки, отладки в терминах исходного языка [см. ]. Информация о номерах строк [см. ] и об именах, встречающихся в программе, позволяет отлаживать программу на уровне исходного C-текста. Каждая таблица имен в объектном файле устроена следующим образом:
Имя первого файла.
Имя первой функции.
Локальные имена из первой функции.
Имя второй функции.
Локальные имена из второй функции. ...
Имена, локальные в первом файле (описанные вне функций как static).
Имя второго файла.
Имя первой функции.
Локальные имена из первой функции.
Имя второй функции.
Локальные имена из второй функции. ...
Имена, локальные во втором файле. ...
Определенные глобальные имена. Неопределенные глобальные имена.
Таблица имен состоит из элементов фиксированной длины (18 байт). Элемент, описывающий имя, кроме собственно текста имени, дополненного нулями, содержит его значение и другую информацию. Ниже приведена соответствующая C-структура:
#define SYMNMLEN 8 /* Максимальное количество символов в тексте имени */ #define FILNMLEN 14 /* Максимальное количество символов в имени файла */ #define DIMNUM 4 /* Размерность массива во вспомогательном разделе */
struct syment { union { /* Все способы описать текст имени */ char _n_name[SYMNMLEN]; /* Текст имени */ struct { long _n_zeroes; /* Если == 0, то в таблице цепочек */ long _n_offset; /* Смещение в табл. цепочек */ } _n_n; char *_n_nptr[2]; } _n; long n_value; /* Значение имени */ short n_scnum; /* Номер секции */ unsigned short n_type; /* Тип и производный тип */ char n_sclass; /* Класс памяти */ char n_numaux; /* Число вспомогательных элементов */ };
#define n_name _n._n_name #define n_zeroes _n._n_n._n_zeroes #define n_offset _n._n_n._n_offset #define n_nptr _n._n_nptr[1]
Смысл значений имен пояснен во включаемом файле <syms.h>. Для описания некоторых имен требуется больше информации, чем содержится в одном элементе; в таком случае за первым элементом, описывающим имя, следуют вспомогательные элементы. Вспомогательные элементы имеют тот же размер, что и основные; их формат приведен ниже:
НАЗВАНИЕ
sync - обновление суперблока на диске
СИНТАКСИС
sync
ОПИСАНИЕ
Команда sync выполняет системный вызов sync. При завершении работы системы команда sync обязательно должна быть выполнена, чтобы обеспечить целостность файловой системы. Sync вытолкнет все системные буфера, что гарантирует реальное выполнение изменений файлов. Более детальное описание см. в .
СМ. ТАКЖЕ
в Справочнике программиста.
НАЗВАНИЕ
sync - обновление суперблока
СИНТАКСИС
void sync ( )
ОПИСАНИЕ
Системный вызов sync приводит к записи на диск всей буферизованной информации. При этом модифицируется суперблок, описатели файлов, буферизованные блоки ввода/ вывода.
Этот вызов должен быть использован в программах, которые просматривают файловую систему, например , и т.д. Вызов sync обязательно должен предшествовать выключению системы.
Запись, хотя и запланированная, не обязательно завершается полностью к моменту возвращения из системного вызова sync.
НАЗВАНИЕ
sync - обеспечивает сохранение последней версии суперблока.
СИНТАКСИС
sync
ОПИСАНИЕ
sync выполняет системную подпрограмму sync. Если система должна быть остановлена, то для обеспечения целостности файловых систем необходимо вызвать sync. Обратите внимание, что команда shutdown вызвает sync автоматически перед остановкой системы.
СМ. ТАКЖЕ
НАЗВАНИЕ
sysadm система меню для интерактивного выполнения функций администратора
СИНТАКСИС
sysadm [команда ...]
ОПИСАНИЕ
Утилита sysadm, в случае вызова без аргумента, выдает главное меню команд администратора, из которого следует выбрать нужную команду. При вызове sysadm с аргументом указанная команда выполняется, либо выдается связанное с ней вспомогательное меню.
Утилита sysadm может быть снабжена паролем (см. ниже admpasswd).
Далее приводится описание всех доступных команд. Уровень меню или команды показан отступом.
diskmgmt меню обслуживания дисков
Команды из этого меню позволяют выполнять различные действия со с емными дисками. Сюда входят команды форматирования, копирования дисков и использование дисков как монтируемых файловых систем. Меню содержит также команды для работы с нес емными носителями.
checkfsys проверить корректность файловой системы на съемном диске
Если в файловой системе есть некорректности, команда checkfsys пытается их устранить.
cpdisk получение точных копий с емного диска
Эта процедура копирует содержимое с емного диска в машину, а затем позволяет сделать его копии, которые будут полностью идентичны оригиналу. Процедура завершается неудачей, если в машине не хватает места для сохранения исходного диска.
erase стереть информацию со с емного диска
Диск заполняется нулевыми байтами. Команда используется для необратимого уничтожения информации.
makefsys создать на с емном диске новую файловую систему
После монтирования с новой файловой системой можно обращаться по тем же правилам, что и с основной, с той лишь разницей, что размер новой файловой системы меньше.
mountfsys смонтировать файловую систему на с емном диске
Файловая система становится доступной для пользователей. Для размонтирования следует пользоваться только командой umountfsys. Нельзя снимать диск со смонтированной файловой системой.
umountfsys размонтировать файловую систему на с емном диске
После размонтирования диск можно снимать.
filemgmt меню обслуживания файлов
Команды из этого меню позволяют сохранять файлы, копируя их на с емный диск или ленту, а также восстанавливать файлы с этих носителей. Команды дают также возможность получить сведения о возрасте и размере файлов.
backup сохранить файлы на с емном диске или ленте
Команда backup позволяет сохранить на с емном диске или ленте копии файлов, принадлежащих основной файловой системе. Имеется два режима копирования: полное, при котором копируются все файлы, и добавочное, когда копируются только измененные файлы.
Файлы, сохраняемые по команде backup, можно затем восстановить командой restore.
diskuse получить сведения о заполнении дисков
Команда diskuse выдает сведения о заполненности смонтированных дисковых устройств. Каждая строка вывода соответствует одной файловой системе.
fileage получить сведения о старых файлах
Команда fileage выводит имена всех файлов, которые не модифицировались указанное число дней (по умолчанию 90).
filesize получить сведения о самых больших файлах
Команда filesize выводит имена самых больших файлов из указанного каталога (по умолчанию выдается список десяти крупнейших файлов).
restore Восстановить файлы, сохраненные командами backup или store
Команда restore позволяет восстановить с диска или ленты файлы, сохраненные командами backup или store. Можно восстановить отдельные файлы, каталоги файлов или все содержимое дисков или лент, причем как с полных, так и с добавочных копий. Кроме того, можно получить список файлов, сохраненных на диске или на ленте.
store сохранить файлы или каталоги файлов на с емном диске или ленте
Команда store копирует файлы с основной файловой системы на диск или ленту и позволяет проверять качество копии и затем при желании удалить оригиналы. Обычно удаляются файлы, которые пользователь желает поместить в архив, или к которым он хочет ограничить доступ. Можно сохранять как отдельные файлы, так и целые каталоги. Для восстановления файлов и просмотра имен сохраненных файлов следует использовать команду restore.
machinemgmt меню обслуживания машины
Под обслуживанием машины здесь понимается ее выключение, перезагрузка или передача управления монитору, хранящемуся в ПЗУ.
powerdown терминировать все активные процессы и выключить машину
Команда powerdown терминирует все активные процессы, закрывает все открытые файлы, записывает на диск буферизованную информацию (например, содержимое каталогов), а затем выключает питание.
reboot терминировать все активные процессы и перезагрузить систему
Команда reboot терминирует все активные процессы, закрывает все открытые файлы, записывает на диск буферизованную информацию (например, содержимое каталогов), а затем перезагружает систему. Команда может применяться при некоторых сбоях системы, например, если не удается уничтожить какой-либо процесс.
whoson вывести список активных пользователей
Команда whoson выводит входные имена, номера терминалов и время входа в систему всех пользователей, которые в данный момент пользуются компьютером.
packagemgmt меню сопровождения пакетов
Команды данной группы предоставляют средства для настройки пакетов, установленных на Вашей системе - например, системы разделения удаленных файлов или стандартной коммуникационной сети.
softwaremgmt меню сопровождения программных систем
Команды данной группы позволяют устанавливать новое программное обеспечение, удалять его или запускать непосредственно со с емного диска. Возможности удаления и запуска зависят от конкретной программной системы.
installpkg установить новую программную систему
Команда install копирует файлы со с емного диска в основную файловую систему и выполняет необходимую дополнительную работу, чтобы программная система могла выполняться.
listpkg вывести список установленных программных систем
removepkg удалить ранее установленную программную систему
Команда сначала выдаст список установленных программных систем, а затем выполнит действия, необходимые для удаления указанных систем. Для удаления системы требуется с емный диск, с которого она устанавливалась.
runpkg выполнить программную систему без установки
Команда runpkg позволяет выполнить программную систему непосредственно со с емного диска, что бывает полезным, когда программной системой пользуются редко, или на основном диске мало места. Следует, правда, учитывать, что не каждая программная система может выполняться в таком режиме.
syssetup меню установки характеристик системы
Команды данной группы позволяют задать дату, время, часовой пояс, пароли для администраторов и системных программистов, имя машины и т.д. Предоставляется также возможность начальной установки характеристик системы.
admpasswd задать или изменить пароли администраторов
Команда admpasswd позволяет установить или изменить пароли для административных команд и пользователей-администраторов, таких как sysadm.
datetime установить дату, время, часовой пояс, поправку на летнее время
Обычно этой командой пользуются один раз при первоначальной установке характеристик системы. По поводу поправки на летнее время см. . Машина может быть выключена и включена вновь, при этом гарантируется, что все установленные временные характеристики будут сохранены.
nodename установить сетевое имя системы
Сетевое имя используется различными коммуникационными утилитами для идентификации данной машины.
setup начальная установка характеристик системы
Команда setup позволяет задать первое входное имя, пароли для администраторов и установить часовой пояс.
syspasswd задать или изменить пароли системных программистов
Команда syspasswd выполняет начальную установку паролей у самых осведомленных пользователей (изменить или удалить пароли команда не позволяет).
ttymgmt меню обслуживания терминала
lineset выдать характеристики терминальных линий и последовательность поиска в файле /etc/gettydefs
Характеристики терминала устанавливаются в соответствии со строками файла /etc/gettydefs. Как правило, строки связаны с помощью меток в кольцевые списки. Если один набор характеристик не подошел, используется следующая строка из списка. Команда выдает эти списки, а также позволяет получить детальную информацию о характеристиках каждой линии.
mklineset создать новую строку с характеристиками терминальной линии или изменить последовательность поиска
modtty показать и, возможно, изменить характеристики терминальной линии
usermgmt меню для манипуляций со списком пользователей
Команды из этого меню позволяют расширять или сокращать список пользователей, изменять информацию о группах и об отдельном пользователе.
addgroup зарегистрировать в системе новую группу
Команда addgroup регистрирует новое имя группы или ее идентификатор.
adduser зарегистрировать в системе нового пользователя
Команда adduser регистрирует новый идентификатор, который будет использоваться при работе с системой. Задается серия вопросов о пользователе, после чего о нем будет создана соответствующая запись. Новые пользователи могут начинать работу в системе сразу после завершения работы команды.
delgroup удалить группу из системы Удаляемая группа теряет свое имя, однако идентификатор группы остается.
deluser удалить пользователя из системы
Команда delgroup позволяет удалить пользователя из системы. При этом не только исключается соответствующая строка из файла /etc/passwd, но и удаляются все файлы, принадлежавшие данному пользователю.
lsgroup вывести список групп, зарегистрированных в системе
lsuser вывести список пользователей, зарегистрированных в системе
modadduser изменить подразумеваемые значения, используемые командой adduser
modgroup изменить имя уже зарегистрированной группы
moduser меню команд для изменения характеристик уже зарегистрированных пользователей
chloginid изменить входное имя
Административные и системные входные имена не могут быть изменены.
chgpasswd изменить пароль пользователя
Административные и системные пароли таким способом изменить нельзя - используйте группу команд syssetup.
chgshell сменить интерпретатор комад
Команда позволяет сменить программу, которая будет запущена при входе пользователя в систему. Интерпретатор команд для администраторов и системных программистов не может быть изменен.
ФАЙЛЫ
Файлы, поддерживающие работу sysadm, находятся в каталогах /usr/admin и /usr/admin/menu.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
sysadmin - выполняет резервное копирование файловых систем и восстановление файлов.
СИНТАКСИС
/etc/sysadmin
ОПИСАНИЕ
sysadmin - утилита, предназначенная для выполнения резервного копирования файловых систем и восстановления файлов с помощью носителей резервных копий, имеет несколько опций. Ее основная функция - выполнять подготовку для работы утилиты , которая осуществляет резервное копирование в соответствии с установленным графиком. В зависимости от дня недели автоматически выбирается либо ежедневное дополняющее резервное копирование (уровень 9) или периодическое полное резервное копирование (уровень 0). Можно вызывать sysadmin и для незапланированного резервного копирования. Она может предоставить листинг сохраненных файлов, а также средства для восстановления отдельных файлов и целых файловых систем с помощью резервных копий.
Главное меню sysadmin выглядит следующим образом:
Filesystem Maintanance Options
1. Perform a scheduled backup 2. Perform a unscheduled backup 3. List the contents of an archive 4. Restore backed up file(s) 5. Restore an entire filesystem 6. Check backup archive integrity
Enter an option or enter q to quit:_
Любой поддерживаемый архивный носитель может быть использован для создания резервных копий. Любая файловая система может быть сохранена в резервной копии. Списки этих устройств в меню подгатавливаются для каждой опции с помощью файлов /tmp/backup.list, /etc/default/archive и /etc/default/filesys.
Чтобы использовать эту программу, вы должны быть привилегированным пользователем.
ФАЙЛЫ
/tmp/backup.list /etc/default/archive /etc/default/filesys
СМ. ТАКЖЕ
, , , , , archive(3), filesys(3)
ПРИМЕЧАНИЯ
Для подключения устройств или для удаления записей более не используемых устройств файлы /tmp/backup.list, /etc/default/archive и /etc/default/filesys могут редактироваться.
ПРЕДУПРЕЖДЕНИЕ
Не следует копировать на стримеры /dev/nrct0 и /dev/nrct2 более одной файловой системы. Это связано с тем, что, хотя backup может скопировать на них больше одной файловой системы, restore будет в состоянии восстановить с этих устройств только одну файловую систему.
Во время резервного копирования не забывайте закрывать защелку дисковода гибких дисков. Если это произойдет при резервном копировании, требующем нескольких дискет, процесс придется начать сначала.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
sysadmsh - утилита системного администрирования с управлением из меню.
СИНТАКСИС
sysadmsh
ОПИСАНИЕ
sysadmsh - простой в употреблении интерфейс, разработанный так, чтобы предоставить начинающим пользователям инструментарий, необходимый для повседневного системного администрирования в системе UNIX.
ПРЕДУПРЕЖДЕНИЕ: sysadmsh не заменяет документацию по системе UNIX, а лишь обеспечивает обзор доступных средств системного администрирования и напоминает о тех задачах, которые должны выполняться регулярно. Для использования sysadmsh необходимо понимание Руководства по инсталляции системы UNIX, Руководства администратора системы и Руководства пользователя.
Для использования этой утилиты введите на системную login-подсказку:
sysadm
При этом вашей программной оболочкой станет иерархия меню sysadmsh. Вы получите доступ ко многим полезным командам и уровням меню, представленным в простой, нагладной форме.
Меню sysadmsh может быь вызвано другим способом посредством подключения к системе в качестве привилегированного пользователя и введения на системную login-подсказку:
sysadmsh
Находясь в среде sysadmsh, вы можете получить контекстно-ориентированную помощь, нажав клавишу <F1>.
Некоторые опции sysadmsh должны запускаться с системной консоли. Некоторые из этих опций требуют однопользовательского режима (режима системного обслуживания). Для получения дополнительной информации смотрите соответствующие страницы документации.
СМ. ТАКЖЕ
acctcom(8), , alias(5), , , , checklist(3), , , , , , , , , , , , , , , , , , , , , , , , , fstab(3), , init(5), , login(5), , , , , mfil(1), , , , , , , , , , , , , systemid(3), , ttys(3), unmount(8), , , , , .
ПРИМЕЧАНИЯ
Для выбора опций редактирования файлов предполагается знание редактора . Однако, если доступен редактор SCO Lyrix, то используется он.
Эта утилита разработана по образцу SCO LYrix Word Processing System.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
sysfs - получение информации о типе файловой системы
СИНТАКСИС
#include <sys/fstyp.h> #include <sys/fsid.h>
int sysfs (opcode, fsname) int opcode; char *fsname;
int sysfs (opcode, fs_index, buf) int opcode; int fs_index; char *buf;
int sysfs (opcode) int opcode;
ОПИСАНИЕ
Системный вызов sysfs возвращает информацию о типах файловых систем, составляющих текущую конфигурацию. Число аргументов, допускаемое системным вызовом sysfs, может изменяться и определяется значением аргумента opcode. В настоящей версии поддерживаются следующие значения opcode и соответствующие им функции:
GETFSIND Преобразование аргумента fsname, задающего идентификатор файловой системы, оканчивающийся нулевым байтом, в индекс типа файловой системы. GETFSTYP Преобразование аргумента fs_index, задающего индекс типа файловой системы, в идентификатор файловой системы, оканчивающийся нулевым байтом. Идентификатор записывается по адресу buf. Размер буфера должен быть не менее FSTYPSZ; эта константа определена в файле <sys/fstyp.h>. GETNFSTYP Получение общего числа типов файловых систем, составляющих текущую конфигурацию.
Системный вызов sysfs завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EINVAL] Аргумент fsname указывает на недопустимый идентификатор файловой системы; значение fs_index недопустимо; значение opcode недопустимо. [EFAULT] Аргумент buf или fsname указывает за пределы отведенного процессу адресного пространства.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
При успешном завершении возвращается индекс типа файловой системы, если значение opcode равно GETFSIND; 0, если значение opcode равно GETFSTYP; общее число типов файловых систем, составляющих текущую конфигурацию, если значение opcode равно GETNFSTYP. В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
sysm68k - машинно-зависимые функции
СИНТАКСИС
#include <sys/trap.h>
int sysm68k (cmd, arg1, arg2, arg3) int cmd, arg1, arg2, arg3;
ОПИСАНИЕ
Системный вызов sysm68k реализует машинно-зависимые действия. Конкретный характер действий определяется аргументом cmd. Количество и смысл остальных аргументов, в свою очередь, зависят от выполняемого действия. Ниже кратко описаны три из возможных действий. Дополнительные сведения можно получить из включаемых файлов <sys/trap.h>, <sys/swap.h> и <sys/conf.h>.
Команда S3BFPHW
Если значение cmd равно S3BFPHW, то проверяется, существует ли сопроцессор, поддерживающий арифметику вещественных чисел. Требуется один дополнительный аргумент - адрес целочисленной переменной. Если сопроцессор существует, то в результате выполнения системного вызова этой переменной присваивается 1, а если не существует, то 0.
Чтобы проверить наличие сопроцессора, необходимо сделать следующее:
#include <sys/trap.h>
int fpu_present; sysm68k (S3BFPHW, &fpu_present);
Системный вызов sysm68k при значении аргумента cmd, равном S3BFPHW, завершается неудачей, и наличие сопроцессора не определяется, если выполнено хотя бы одно из следующих условий:
[EFAULT] Дополнительный аргумент не является корректным адресом целочисленной переменной (например, он оказался нечетным). [EFAULT] Дополнительный аргумент указывает за пределы отведенного процессу адресного пространства.
Команда S3BSWPI
Если значение cmd равно S3BSWPI, то может быть добавлена или удалена отдельная область подкачки. Можно также получить текущую информацию обо всех областях подкачки. В качестве дополнительного аргумента указывается адрес структуры типа swapint:
struct swapint { char si_cmd; /* Код команды (см. ниже). */ char *si_buf; /* В случае информационного запроса [код SI_LIST] это поле должно указывать на буфер размером не менее sizeof (swpt_t) * MSFILES байт. В остальных запросах это указатель на маршрутное имя файла-устройства, на котором находится или создается область подкачки. */ int si_swplo; /* Номер первого блока области подкачки. Используется только для добавления и удаления областей подкачки. */ int si_nblks; /* Размер области подкачки в блоках. Используется только в запросе добавления области подкачки. */ } /* Возможные значения si_cmd (коды команд) */ #define SI_LIST 0 /* Получить список текущих областей подкачки. */ #define SI_ADD 1 /* Добавить область подкачки. */ #define SI_DEL 2 /* Удалить одну из текущих областей подкачки. */
НАЗВАНИЕ
system - выполнение команды shell'а
СИНТАКСИС
#include <stdio.h>
int system (string) char *string;
ОПИСАНИЕ
Аргумент string передается shell'у в качестве входной строки, как если бы эта строка была введена с терминала. Текущий процесс ожидает завершения shell'а, после чего функция system возвращает результат, равный коду завершения shell'а.
ФАЙЛЫ
/bin/sh
СМ. ТАКЖЕ
.
в Справочнике пользователя.
ДИАГНОСТИКА
Для того, чтобы запустить shell, выполняются системные вызовы fork и exec, и если один из них завершится неудачей, функция system вернет отрицательное число и поместит код ошибки в переменную errno
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
systemid - фaйл cиcтeмныx идeнтификaтopoв ceти Micnet
ОПИСАНИЕ
Фaйл systemid coдepжит мaшинныe и ceтeвыe имeнa для cиcтeм, вxoдящиx в ceть Micnet. Machine name (мaшиннoe имя) - имя cиcтeмы, включeннoй в ceть, site name -имя ceти, в кoтopyю включeнa cиcтeмa.
Фaйл systemid мoжeт coдepжaть ceтeтoe имя и дo чeтыpex мaшинныx имeн. Фaйл имeeт cлeдyющий фopмaт:
[site-name] [machine-name1] [machine-name2] [machine-name3] [machine-name4]
Фaйл дoлжeн coдepжaть нe мeнee oднoгo мaшиннoгo имeни. Дpyгиe мaшинныe имeнa являютcя aльтepнaтивными и нeoбязaтeльными. Ceтeвoe имя дoлжнo пpиcyтcтвoвaть, ecли иcпoльзyeтcя бoлee oднoгo мaшиннoгo имeни или, ecли ceть cвязaнa c дpyгoй ceтью пo линии cвязи uucp. Ceтeвoe имя дoлжнo paзмeщaтьcя нa пepвoй cтpoкe фaйлa.
Имя дoлжнo нaчинaтьcя c бyквы и мoжeт cocтoять нe бoлee, чeм из дeвяти cимвoлoв (бyкв или цифp). Ha oднoй cтpoкe мoжeт paзмeщaтьcя тoлькo oднo имя. Cтpoкa, нaчинaющaяcя c cимвoлa `#', являeтcя кoммeнтapиeм и игнopиpyeтcя.
Для кaждoй cиcтeмы, включeннoй в ceть, тpeбyeтcя пo oднoмy фaйлy systenid, coдepжaщeмy yникaльнoe мaшиннoe имя и имя ceти, ecли oнa cвязaнa c дpyгoй ceтью uucp-cвязью.
Systemid иcпoльзyeтcя в ocнoвнoм пpи pacпoзнaвaнии пceвдoнимoв. Ceтeвoe и/или мaшиннoe имя, coдepжaщeecя в пceвдoнимe, cpaвнивaeтcя c имeнaми в фaйлe systemid и пpи ycпeшнoм cpaвнeнии yдaляeтcя. B пpoтивнoм cлyчae, пceвдoним (и cвязaнныe c ним cooбщeниe, фaйл или кoмaндa) пepecылaютcя в yкaзaннyю ceть и/или мaшинy для дaльнeйшиx дeйcтвий.
ФАЙЛЫ
/etc/systemid
СМ. ТАКЖЕ
, ,
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
systty - Устройство системного обслуживания
ОПИСАНИЕ
Файл /dev/systty - устройство, на котором высвечиваются сообщения о системных ошибках. Действующие физическое устройство, доступное /dev/systty, выбирается во время начальной загрузки, и обычно это устройство, используемое для управления за процедурой начальной загрузки. По умолчанию физическое устройство /dev/systty определяется с помощью boot(HW), когда система поднимает этот вопрос.
Первоначально /dev/console соединяется с /dev/systty.
ФАЙЛЫ
/dev/systty
СМ. ТАКЖЕ
boot(HW),
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
НАЗВАНИЕ
trig: sin, cos, tan, asin, acos, atan, atan2 - тригонометрические функции
СИНТАКСИС
#include <math.h>
double sin (x) double x;
double cos (x) double x;
double tan (x) double x;
double asin (x) double x;
double acos (x) double x;
double atan (x) double x;
double atan2 (y, x) double x, y;
ОПИСАНИЕ
Функции sin, cos и tan возвращают, соответственно, синус, косинус и тангенс своего аргумента, заданного в радианах.
Функция asin возвращает значение arcsin (x) в диапазоне от - П/2 до П/2.
Функция acos возвращает значение arccos (x) в диапазоне от 0 до П.
Функция atan возвращает значение arctg (x) в диапазоне от - П/2 до П/2.
Функция atan2 возвращает значение arctg (y/x) в диапазоне от - П до П, используя знаки обоих аргументов для определения квадранта, которому должно принадлежать возвращаемое значение.
СМ. ТАКЖЕ
.
ДИАГНОСТИКА
При вычислении значений функций sin, cos и tan для значений аргумента, далеких от нуля, происходит потеря точности. При достаточно больших значениях аргумента, когда происходит полная потеря значимости, эти функции возвращают нулевое значение; при этом в стандартный протокол будет выдано соответствующее сообщение. В не столь крайнем случае, когда происходит лишь частичная потеря значимости, сообщение об ошибке не выдается. В обоих случаях переменной errno присваивается значение ERANGE.
Если абсолютная величина аргумента функций asin или acos превышает 1, либо оба аргумента функции atan2 равны нулю, то будет возвращено нулевое значение, а переменной errno присвоено значение EDOM. Кроме того, в стандартный протокол будет выдано сообщение о выходе за границы области определения.
Изложенная процедура обработки ошибок может быть изменена посредством функции .