Unix Man (Справочное руководство)


SIGNAL(2) - часть 3


  • Действующий и реальный идентификаторы пользователя процесса, получившего сигнал, совпадают.
  • Обычный файл с именем core существует и в него можно писать, или файл core может быть создан; создаваемый файл core будет обладать следующими характеристиками:
    1. Режим доступа 0666, модифицированный маской режима создания файлов [см. ].
    2. Идентификатор владельца файла равен действующему идентификатору пользователя процесса, получившего сигнал.
    3. Идентификатор группы файла равен действующему идентификатору группы процесса, получившего сигнал.

    [2]

    Для сигналов SIGCLD и SIGPWR, как и для других, в качестве func может использоваться одно из трех значений: SIG_DFL, SIG_IGN или адрес функции обработки сигнала. Однако действия, предписываемые этими значениями, отличаются от описанных выше:

    SIG_DFL - игнорирование сигнала

    SIG_IGN - игнорирование сигнала

    Если значение sig равно SIGCLD, то процессы, порожденные вызывающим процессом, не перейдут в состояние зомби при своем завершении [см. ].

    адрес_функции - перехват сигнала

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

    Сигнал SIGCLD взаимодействует с системными вызовами wait и exit следующим образом:

    wait Если значение func для сигнала SIGCLD установлено равным SIG_IGN и выполняется системный вызов wait, то после получения сигнала SIGCLD wait блокируется до завершения всех процессов, порожденных вызывающим процессом; затем wait возвращает -1, а переменной errno присваивается значение ECHILD. exit Если процесс, родительский по отношению к процессу, выполняющему exit, установил для сигнала SIGCLD действие SIG_IGN, то завершающийся процесс не переходит в состояние зомби.

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

    [3]

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

    СМ. ТАКЖЕ


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

    ДИАГНОСТИКА


    При успешном завершении системного вызова signal возвращается предыдущее значение func для указанного сигнала sig. В противном случае возвращается значение SIG_ERR, а переменной errno присваивается код ошибки. Значение SIG_ERR определено во включаемом файле <sys/signal.h>.

    СЮРПРИЗЫ


    При попытке изменить стандартную реакцию на сигнал SIGKILL возвращается значение SIG_DFL (а не SIG_ERR, как должно быть), а переменная errno получает значение EINVAL.




    Начало  Назад  Вперед