【发布时间】:2011-09-25 17:32:12
【问题描述】:
我正在学习 FreeBSD 课程并且正在阅读系统调用 kill(2) 的实现。
http://fxr.watson.org/fxr/source/kern/kern_sig.c?v=FREEBSD82#L1687
部分代码:
1717 switch (uap->pid) {
1718 case -1: /* broadcast signal */
1719 return (killpg1(td, uap->signum, 0, 1, &ksi));
1720 case 0: /* signal own process group */
1721 return (killpg1(td, uap->signum, 0, 0, &ksi));
1722 default: /* negative explicit process group */
1723 return (killpg1(td, uap->signum, -uap->pid, 0, &ksi));
1724 }
1725 /* NOTREACHED */
1726 }
1) 调用系统调用时pid是否手动设置为0和-1表示进程组或某事?
2) 为什么“signum”会参与进来?
3) 如何理解杀死单个进程的代码?代码有什么作用?
我可能会问一些非常愚蠢的问题,但请帮忙。
【问题讨论】:
标签: system freebsd kernel system-calls