Linux系统中的信号处理与虚拟文件系统详解
1. 信号处理相关系统调用
在用户模式下运行的程序可以发送和接收信号,为此定义了一系列系统调用。不过由于历史原因,存在一些功能基本相同的系统调用,导致部分系统调用几乎不会被使用。例如,sys_sigaction()和sys_rt_sigaction()几乎相同,C 库中的sigaction()包装函数最终会调用sys_rt_sigaction()而非sys_sigaction()。下面介绍一些重要的系统调用。
1.1kill()系统调用
kill(pid, sig)系统调用常用于向传统进程或多线程应用程序发送信号,其对应的服务例程是sys_kill()函数。pid参数的含义取决于其数值:
-pid > 0:将sig信号发送到 PID 等于pid的进程的线程组。
-pid = 0:将sig信号发送到与调用进程处于同一进程组的所有进程的线程组。
-pid = -1:将信号发送到除swapper(PID 0)、init(PID 1)和当