===== send ===== ==== Синтаксис ==== void send(union SIGNAL **sig, PROCESS to); ==== Описание ==== Посылает буфер сигнала указанному процессу и заменяет сигнал на NIL в указателе вызывающего процесса, чтоб не допустить повторное использование процесса.\\ Вызывающий процесс после вызова перестаёт владеть буфером.\\ (FIXME переадресация сигналов)\\ Если целевой процесс завершён, сигнал молча уничтожается, вызывающий процесс этого не узнает. ==== Параметры ==== * **sig** - указатель на буфер сигнала * **to** - идентификатор процесса, которому будет послан сигнал. ==== Возвращаемое значение ==== Нет ==== Ограничения ==== Вызывающий процесс может достучаться до адресата в одном из следующих случаев: * вызывающий процесс - superuser, то есть номер его пользователя 0 * вызывающий процесс и адресат имеют одинаковый номер пользователя * вызывающий процесс и адресат - части одного и того же блока (FIXME переадресация сигналов) ==== Пример ==== #define MYPROCESS_DOSOMETHING 1 struct MYSIG { SIGSELECT sig_no; char data; }; union SIGNAL { SIGSELECT sig_no; struct MYSIG mysig; }; ... union SIGNAL *sig; sig = alloc(sizeof(struct MYSIG), MYPROCESS_DOSOMETHING); sig->forth.data =’x’; send(&sig,proc_); ==== См. также ==== [[alloc]], [[free_buf]], [[receive]], [[receive_w_tmo]]