Значение сигнала в реальном времени? - PullRequest
2 голосов
/ 05 сентября 2011

Стандартный сигнал, позволяет поставить в очередь только один сигнал. Сигнал реального времени позволяет поставить более одного сигнала в очередь. Это единственная разница? Или у нас есть какое-то другое преимущество?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Согласно signal(7) manpage , есть несколько отличий:

   Real-time signals are distinguished by the following:

   1.  Multiple instances of real-time signals can  be  queued.   By  con-
   trast,  if  multiple  instances  of a standard signal are delivered
   while that signal is currently blocked, then only one  instance  is
   queued.

   2.  If  the  signal  is  sent  using sigqueue(2), an accompanying value
   (either an integer or a pointer) can be sent with the  signal.   If
   the  receiving  process establishes a handler for this signal using
   the SA_SIGINFO flag to sigaction(2) then it can  obtain  this  data
   via  the  si_value  field  of the siginfo_t structure passed as the
   second argument to the handler.  Furthermore, the si_pid and si_uid
   fields  of  this  structure  can be used to obtain the PID and real
   user ID of the process sending the signal.

   3.  Real-time signals are delivered in a  guaranteed  order.   Multiple
   real-time  signals of the same type are delivered in the order they
   were sent.  If different real-time signals are sent to  a  process,
   they  are  delivered  starting  with  the  lowest-numbered  signal.
   (I.e., low-numbered signals have highest priority.)

   If both standard and real-time signals are pending for a process, POSIX
   leaves it unspecified which is delivered first.  Linux, like many other
   implementations, gives priority to standard signals in this case.
0 голосов
/ 05 сентября 2011

Различия суммируются, например, здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...