mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

      INTRO(1)                                               INTRO(1)

      НАЗВАНИЕ
              intro - введение в описание команд и  прикладных  прог-
              рамм

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

              1    Команды общего назначения

              1C   Коммуникационные команды

              1G   Графические команды

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

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

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

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

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

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

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

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

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

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

              1.   Имя команды должно иметь длину от двух  до  девяти
                   символов.

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

              3.   Флаги должны состоять только из одного символа.

              4.   Перед каждой опцией должен стоять знак -.

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

              6.   Первый аргумент_опции должен быть отделен от флага
                   пробелом.

              7.   Аргумент_опции не может быть необязательным.

              8.   Группы   аргументов_опции,  следующие  за  флагом,
                   должны отделяться друг от друга либо запятыми, ли-
                   бо пробелами, но в последнем случае аргументы сле-
                   дует заключать в кавычки, например -o xxx,z,yy или
                   -o "xxx z yy".

              9.   Все опции должны указываться перед аргументами_ко-
                   манды.

              10.  Для обозначения конца опций  может  использоваться
                   последовательность --.

              11.  Относительный порядок опций не должен играть роль.

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

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

      СМ. ТАКЖЕ
              getopts(1).
              exit(2), wait(2), getopt(3C) в Справочнике программиста.
              Предисловие к настоящему Справочнику.

      КОД ЗАВЕРШЕНИЯ
              При  завершении каждая команда возвращает код, занимаю-
              щий два байта: первый байт содержит системный  код  за-
              вершения,  а  второй  (в случае нормального завершения)
              содержит пользовательский код, возвращаемый  программой
              [см. wait(2) и exit(2)]. Первый байт при нормальном за-
              вершении  равен 0. Второй байт принято возвращать нуле-
              вым при успешном завершении  и  ненулевым  при  наличии
              ошибок  (неверные  аргументы,  неверные или недоступные
              данные и т.д.) не позволяющих достичь  цели.  Пользова-
              тельский код завершения может называться также статусом
              завершения  или кодом возврата и описывается только при
              наличии специальных соглашений.

      СЮРПРИЗЫ
              Увы, многие команды не придерживаются  описанного  выше
              синтаксиса.

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



INTRO(2)                                               INTRO(2)

НАЗВАНИЕ 
        intro - введение в описание системных вызовов и номеров
        ошибок

СИНТАКСИС 
        #include 

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

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

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

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

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

        4  EINTR        Прерывание системного вызова 
             Асинхронный сигнал (такой  как  сигнал  прерывания
             или выхода), перехватываемый пользователем, пришел
             во  время выполнения системного вызова. Если после
             обработки  сигнала  будет  продолжено   выполнение
             программы,  то  системный вызов завершится с ошиб-
             кой.

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

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

        7  E2BIG        Длинный список аргументов 
             При  обращении  к  системному  вызову из семейства
             exec(2) задан список аргументов, содержащий  более
             5120 байт.

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

        9  EBADF        Неверный номер файла 
             Или дескриптор файла указывает на неоткрытый файл,
             или запрос на чтение (соответственно запись)  сде-
             лан для файла, открытого только для записи  (соот-
             ветственно чтения).

        10  ECHILD      Нет порожденных процессов 
             Системный вызов wait(2) был выполнен процессом, не
             имеющим  существующих  порожденных  процессов  или
             процессов, которых он не дождался.

        11  EAGAIN      Слишком много процессов 
             Системный  вызов  fork(2) завершился аварийно, так
             как системная таблица процессов полна или  пользо-
             вателю  не разрешено более создавать новые процес-
             сы.

        12  ENOMEM      Исчерпано пространство 
             Во время  выполнения  системных  вызовов  exec(2),
             brk(2),  или sbrk(2) программе потребовалось места
             в памяти больше, чем система может  выделить.  Это
             не  временное  условие; максимальный размер прост-
             ранства является системным параметром. Ошибка  мо-
             жет также  иметь  место, если набор секций  команд
             данных и стека требует  слишком  много  сегментных
             регистров или, если при вызове fork(2) недостаточ-
             но места в области подкачки.

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

        14  EFAULT      Недопустимый адрес 
             Произошло прерывание при попытке использования ар-
             гументов системного вызова.

        15  ENOTBLK     Требуется блочное устройство 
             Не блочный файл указан там, где ожидался  блочный,
             например, в вызове mount(2).

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

        17  EEXIST      Файл уже существует 
             Существующий файл указан в неподходящем контексте,
             например  в  качестве  аргумента системного вызова
             link(2).

        18  EXDEV       Ссылка на другое устройство 
             Была предпринята попытка  создать  ссылку на файл,
             расположенный на другом устройстве.

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

        20  ENOTDIR     Требуется каталог 
             Там где ожидалось имя каталога, указано нечто дру-
             гое;  например,  в маршрутном имени или в качестве
             аргумента системного вызова chdir(2).

        21  EISDIR      Попытка записи в каталог

        22  EINVAL      Недопустимый аргумент 
             Недопустимое значение аргумента (например, размон-
             тирование несмонтированного  устройства;  указание
             неопределенного  сигнала  при вызове signal(2) или
             kill(2); чтение или запись в  файл,  для  которого
             вызов  lseek(2)  вернул  отрицательный указатель).
             Также устанавливается  математическими  функциями,
             описанными в разделе 3M настоящего Справочника.

        23  ENFILE      Переполнена таблица файлов 
             Системная таблица открытых  файлов  переполнена  и
             временно не может быть  выполнен  системный  вызов
             open(2).

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

        25  ENOTTY      Не символьное устройство 
             Была предпринята попытка выполнить системный вызов
             ioctl(2) к файлу, который не является  специальным
             символьным.

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

        27  EFBIG       Слишком большой файл 
             Размер  файла превысил максимально допустимое зна-
             чение ULIMIT [см. ulimit(2)].

        28  ENOSPC      Исчерпано пространство на устройстве 
             При записи [посредством write(2)] в  обычный  файл
             на  устройстве  не  осталось свободного места. При
             выполнении fcntl(2) установка или снятие блокиров-
             ки с записей файла не может быть произведено,  так
             как в системе не осталось больше места.

        29  ESPIPE      Ошибка позиционирования 
             Аргументом системного вызова lseek(2) является ка-
             нал.

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

        31  EMLINK      Слишком много ссылок 
             Была предпринята попытка  создать  более  чем  100
             ссылок на файл.

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

        33  EDOM        Выход за границы области определения 
             Аргумент  функции,  описанной  в разделе 3M, лежит
             вне ее области определения.

        34  ERANGE      Переполнение 
             Результат функции, описанной в  разделе  3M,  неп-
             редставим с допустимой в машине точностью.

        35  ENOMSG      Нет сообщений такого типа 
             Была предпринята попытка получить сообщение  типа,
             который не существует в указанной очереди  сообще-
             ний [см. msgop(2)].

        36  EIDRM       Идентификатор удален 
             Эта ошибка возвращается процессам,  которые возоб-
             новляют выполнение из-за  удаления  идентификатора
             очереди  сообщений, семафора или разделяемого сег-
             мента из системной таблицы  имен  [см.  msgctl(2),
             semctl(2), shmctl(2)].

        37-44           Зарезервированные номера

        45  EDEADLK     Тупик обнаружен и обойден 
             Была обнаружена и исправлена  тупиковая  ситуация.
             Эта ошибка свойственна операциям блокировки файлов
             и их частей.

        46  ENOLCK      Ошибка блокировки 
             При  выполнении fcntl(2) установка или снятие бло-
             кировки файла не может быть произведено, так как в
             системе не осталось больше места.

        60  ENOSTR      Не псевдоустройство 
             Попытка  выполнить  системные  вызовы  putmsg(2) и
             getmsg(2) для дескриптора файла, а файл не являет-
             ся псевдоустройством.

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

        63  ENOSR       Исчерпаны ресурсы псевдоустройств 
             При  попытке выполнить системный вызов open(2) для
             псевдоустройства не было  доступных  очередей  или
             структур данных.

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

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

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

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

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

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

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

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

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

        77  EBADMSG     Недопустимое сообщение 
             При   выполнении   системных   вызовов    read(2),
             getmsg(2)  или вызова ioctl(2) для псевустройства,
             с аргументом I_RECVFD, в начале очереди  оказалось
             нечто,  что не может быть обработано. Что   именно
             - зависит от системного вызова:

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

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

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

        83  ELIBACC     Нет доступа к разделяемой библиотеке 
             Попытка выполнить вызов exec(2) для  файла  a.out,
             который ссылается  на  разделяемую  библиотеку,  а
             библиотека не существует  или  у  пользователя  не
             хватает прав для ее использования.

        84  ELIBBAD     Повреждение разделяемой библиотеки 
             Попытка  выполнить  вызов exec(2) для файла a.out,
             который ссылается  на  разделяемую  библиотеку,  а
             exec(2) не может загрузить эту библиотеку. Возмож-
             но, структура разделяемой библиотеки нарушена.

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

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

        87  ELIBEXEC    Выполняется разделяемая библиотека 
             Попытка выполнить  вызов  exec(2)  непосредственно
             для разделяемой библиотеки, что запрещено.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        msg_first 
             Указатель на первое сообщение в очереди.

        msg_last 
             Указатель на последнее сообщение в очереди.

        msg_cbytes 
             Текущее количество байт в очереди.

        msg_qnum 
             Текущее количество сообщений в очереди.

        msg_qbytes 
             Максимально допустимое количество байт в очереди.

        msg_lspid 
             Идентификатор процесса, который последним выполнял
             операцию msgsnd [см. msgop(2)].

        msg_lrpid 
             Идентификатор процесса, который последним выполнял
             операцию msgrcv [см. msgop(2)].

        msg_stime 
             Время выполнения последней операции msgsnd.

        msg_rtime 
             Время выполнения последней операции msgrcv.

        msg_ctime 
             Время выполнения последней операции msgctl(2), ко-
             торая изменила  какой-либо  элемент  вышеописанной
             структуры.

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

        Права на операции с сообщениями. В  описании  системных
        вызовов  msgop(2) и msgctl(2) права, требуемые для опе-
        раций, записаны в фигурных скобках { и }. Права состоят
        в следующем:

             00400      Чтение для владельца.
             00200      Запись для владельца.
             00040      Чтение для группы.
             00020      Запись для группы.
             00004      Чтение для остальных.
             00002      Запись для остальных.

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

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

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

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

        4.   Соответствующие  биты  для  прочих пользователей в
             msg_perm.mode (0006) равны 1.

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

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

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

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

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

        sem_base 
             Указатель на первый семафор в множестве  (см.  ни-
             же).

        sem_nsems 
             Количество семафоров в множестве. Каждый семафор в
             множестве имеет целый положительный номер, называ-
             емый sem_num, и принимает последовательные  значе-
             ния от 0 до (sem_nsems - 1).

        sem_otime 
             Время последней операции semop(2).

        sem_ctime 
             Время последней операции semctl(2), которая  изме-
             нила какой-либо элемент вышеописанной структуры.

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

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

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

        semval 
             Неотрицательное  целое число, являющееся значением
             семафора.

        sempid 
             Идентификатор процесса, который последним выполнял
             какую-либо операцию с данным семафором.

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

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

        Права на операции с семафорами.  В  описании  системных
        вызовов  semop(2) и semctl(2) права, требуемые для опе-
        раций, записаны в фигурных скобках { и }. Права состоят
        в следующем:

             00400      Чтение для владельца.
             00200      Изменение для владельца.
             00040      Чтение для группы.
             00020      Изменение для группы.
             00004      Чтение для остальных.
             00002      Изменение для остальных.

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

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

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

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

        4.   Соответствующие биты для  прочих  пользователей  в
             sem_perm.mode (0006) равны 1.

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

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

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

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

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

        shm_segsz 
             Размер разделяемого сегмента памяти в байтах.

        shm_lpid 
             Идентификатор   процесса,  последним  выполнившего
             операцию shmop(2).

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

        shm_nattch 
             Счетчик  количества  процессов, к которым в данный
             момент подсоединен разделяемый сегмент памяти.

        shm_atime 
             Время последней операции shmat(2).

        shm_dtime 
             Время последней операции shmdt(2).

        shm_ctime 
             Время последней операции shmctl(2), которая  изме-
             нила какой-либо элемент вышеописанной структуры.

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

        Права  на  операции с разделяемыми сегментами памяти. В
        описании системных вызовов shmop(2) и shmctl(2)  права,
        требуемые для операций, записаны в фигурных скобках { и
        }. Права состоят в следующем:

             00400      Чтение для владельца.
             00200      Запись для владельца.
             00040      Чтение для группы.
             00020      Запись для группы.
             00004      Чтение для остальных.
             00002      Запись для остальных.

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

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

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

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

        4.   Соответствующие  биты  для  прочих пользователей в
             shm_perm.mode (0006) равны 1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СМ. ТАКЖЕ 
        intro(3).



INTRO(4)                                               INTRO(4) 

НАЗВАНИЕ 
        intro - введение в описание форматов файлов

ОПИСАНИЕ 
        В этом разделе в общих чертах описываются форматы  раз-
        личных  файлов. Где это возможно, формат файла описыва-
        ется в виде структуры на  языке  C.  Обычно  включаемые
        файлы, содержащие описания этих структур, располагаются
        в  каталогах  /usr/include  или  /usr/include/sys.  Для
        включения файлов в программы на языке C могут быть  ис-
        пользованы следующие конструкции:

             #include <имя_файла.h>

        и

             #include 




INTRO(5)                                               INTRO(5)

НАЗВАНИЕ 
        intro - введение в описание различных возможностей

ОПИСАНИЕ 
        В этом разделе  описываются  различные  предоставляемые
        средства, такие как таблицы кодов символов, пакеты мак-
        роопределений т.д.



      INTRO(1M)                                             INTRO(1M)

      НАЗВАНИЕ
              intro  -  введение в описание команд и прикладных прог-
              рамм для обслуживания системы

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

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

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

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

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

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

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

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

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

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

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

      СМ. ТАКЖЕ
              intro(1), getopts(1) в Справочнике пользователя.
              getopt(3C) в Справочнике программиста.

      ДИАГНОСТИКА
              При  завершении каждая команда возвращает код, занимаю-
              щий два байта: первый байт содержит системный  код  за-
              вершения,  а  второй  (в случае нормального завершения)
              содержит пользовательский код, возвращаемый  программой
              [см. wait(2) и exit(2)]. Первый байт при нормальном за-
              вершении  равен 0. Второй байт принято возвращать нуле-
              вым при успешном завершении  и  ненулевым  при  наличии
              ошибок  (неверные  параметры,  неверные или недоступные
              данные и т.д.) не позволяющих достичь  цели.  Пользова-
              тельский код завершения может называться также статусом
              завершения  или кодом возврата и описывается только при
              наличии специальных соглашений.

      СЮРПРИЗЫ
              Увы, многие команды не придерживаются  описанного  выше
              синтаксиса.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк