The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Распечатка 7.9 Асинхронное уведомление с помощью SIGEV_SIGNAL

Распечатка 7.9 Асинхронное уведомление с помощью SIGEV_SIGNAL

Предыдущая  Содержание  Следующая V*D*V

Распечатка 7.9.

 

struct sigevent notif;

sigset_t sig_set;

siginfo_t info;

      ....

 

/* Сигналом уведомления является SIGUSR1. */

sigemptyset(&sig_set);

sigaddset(&sig_set, SIGUSR1);

 

/*

 * Блокируем SIGUSR1, так как мы будем ждать его

 * в вызове sigwaitinfo

 */

sigprocmask(SIG_BLOCK, &sig_set, NULL);

 

/* Теперь настраиваем уведомление */

notif.sigev_notify = SIGEV_SIGNAL;

notif.sigev_signo = SIGUSR1;

 

if (mq_notify(ds, &notif)){

  perror("mq_notify");

  return -1;

}

 

/*

 * Если в очередь поступит сообщение, будет

 * доставлен SIGUSR1

 */

do {

  sigwaitinfo(&sig_set, &info);

} while(info.si_signo != SIGUSR1);

 

/* Теперь можно принять сообщение. */

if (mq_receive(ds, new_text, SIZE, &prio) == -1)

  perror("Receiving message error");

 

      ....

 

Предыдущая  Содержание  Следующая