当前位置: 技术问答>linux和unix
请教各位大虾kill_proc的用法
来源: 互联网 发布时间:2016-02-11
本文导语: 我在内核程序里用kill_proc向用户程序发信号,请问这个函数的最后一个参数是什么意思,使用这个函数有没有什么需要注意的地方。谢谢了 | int kill_proc(pid_t pid, int sig, int priv) { return kill_p...
我在内核程序里用kill_proc向用户程序发信号,请问这个函数的最后一个参数是什么意思,使用这个函数有没有什么需要注意的地方。谢谢了
|
int
kill_proc(pid_t pid, int sig, int priv)
{
return kill_proc_info(sig, __si_special(priv), pid);
}
#define __si_special(priv)
((priv) ? SEND_SIG_PRIV : SEND_SIG_NOINFO)
priv=0就是SEND_SIG_NOINFO
priv非0就是SEND_SIG_PRIV
kill_proc(pid_t pid, int sig, int priv)
{
return kill_proc_info(sig, __si_special(priv), pid);
}
#define __si_special(priv)
((priv) ? SEND_SIG_PRIV : SEND_SIG_NOINFO)
priv=0就是SEND_SIG_NOINFO
priv非0就是SEND_SIG_PRIV
|
case (unsigned long) SEND_SIG_NOINFO:
q->info.si_signo = sig;
q->info.si_errno = 0;
q->info.si_code = SI_USER;
q->info.si_pid = current->pid;
q->info.si_uid = current->uid;
break;
case (unsigned long) SEND_SIG_PRIV:
q->info.si_signo = sig;
q->info.si_errno = 0;
q->info.si_code = SI_KERNEL;
q->info.si_pid = 0;
q->info.si_uid = 0;
break;
q->info.si_signo = sig;
q->info.si_errno = 0;
q->info.si_code = SI_USER;
q->info.si_pid = current->pid;
q->info.si_uid = current->uid;
break;
case (unsigned long) SEND_SIG_PRIV:
q->info.si_signo = sig;
q->info.si_errno = 0;
q->info.si_code = SI_KERNEL;
q->info.si_pid = 0;
q->info.si_uid = 0;
break;