как это?
int sigqueue(pid_t to_pid, int signr, const union sigval pointer_or_int);
и на другом конце:
int signr=int sigwaitinfo(const sigset_t *set, siginfo_t *info);
Внимание !: передача по ссылке может не работать между различными адресными пространствами / процессами (я сам этого еще не проверял), поэтому сначала проверьте это между потоками одного и того же процесса ....
удачи: -)