커널에서 호출한 프로세스로 시그널을 전달할 수 있다. 시그널 호출 시 전달되는 데이터는 siginfo 구조체로 정의되어 있다.
다음은 include/asm-generic/siginfo.h에 정의되어 있는 내용 중 일부이다.
typedef struct siginfo {
int si_signo;
int si_errno;
int si_code;
union {
...
} _sifields;
} siginfo_t;
#define si_pid _sifields._kill._pid
...
#define si_int _sifields._rt._sigval.sival_int
...
사용할 수 있는 함수들은 다음과 같다.
recalc_sigpendign | |
dequeue_signal | |
flush_signals | |
force_sig | |
kill_pg | |
kill_proc | 호출한 프로세스(pid)에 signal을 보내고 siginfo를 인자로 넘긴다 |
ptrace_notify | |
send_sig | |
send_sig_info | |
sigprocmask | |
block_all_signals | |
unblock_all_signals | |
시그널 함수 중 kill_proc()함수는 다음과 같이 이용할 수 있다.
struct siginfo info;
info.si_signo = SIGUSR2;
info.si_errno = 0;
info.si_code = SI_QUEUE;
info.si_int = flags;
if (kill_proc(cpid, SIGUSR2, (int)&info))
kill_proc(cpid, SIGINT, 1);
프로세스(cpid)에
?SIGUSR2 시그널을 보낸다. 보내는 것에 실패한다면 SIGINT를 보내게 된다.