### 捕获SIGKILL
SIGKILL是常见的Linux信号,我们使用`kill`命令杀掉进程也就是像进程发送SIGKILL信号。
和其他信号不同,[SIGKILL](https://en.wikipedia.org/wiki/Unix_signal#SIGKILL)和SIGSTOP是不可被Catch的,因此下面的代码是能编译通过但也是无效的,更多细节可以参考[golang/go#9463](https://github.com/golang/go/issues/9463).
~~~
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGKILL, syscall.SIGSTOP)
~~~
### 注意事项
这是Linux内核的限制,这种限制也是为了让操作系统有可能控制进程的生命周期,理解后我们也不应该去尝试捕获SIGKILL。
不过还是有人这样去做,最后结果也不符合预期,这需要我们对底层有足够的理解。
- 前言
- 致谢
- 概述
- 使用代码
- 使用Docker
- 进程基础
- 进程是什么
- Hello World
- PID
- PPID
- 使用PID
- 进程名字
- 进程参数
- 输入与输出
- 并发与并行
- 进程越多越好
- 进程状态
- 退出码
- 进程资源
- 死锁
- 活锁
- POSIX
- Nohup
- 运行进程
- Go编程实例
- 衍生新进程
- 执行外部程序
- 复制进程
- 进程进阶
- 文件锁
- 孤儿进程
- 僵尸进程
- 守护进程
- 进程间通信
- 信号
- Linux系统调用
- 文件描述符
- Epoll
- 共享内存
- Copy On Write
- Cgroups
- Namespaces
- 项目实例Run
- 项目架构
- 代码实现
- 注意事项
- 创建目录权限
- 捕获SIGKILL
- Sendfile系统调用
- 后记
- 参考书籍
- 项目学习
- 再次感谢