主要观点:介绍了 Linux 内核中 pidfd 的相关信息,包括其作用、获取方式及可进行的操作等。
关键信息:
- pidfd 是一种特殊文件,可持有进程引用,能以无竞争方式进行某些进程相关操作,可用于检测进程终止。
- 有多种获取 pidfd 的方式,不同内核版本和 glibc 版本对应不同函数。
- 获得 pidfd 后可进行多种操作,如发送信号、获取进程 pid、使用 poll/select/epoll 监测等。
- 进程有 alive(存活)、zombie(僵尸)、dead(死亡)状态,各状态有不同特性。
重要细节: clone与CLONE_PIDFD标志:5.2 内核及相应 glibc 版本可用,指定该标志可返回 pidfd 及子进程 pid,O_CLOEXEC标志自动设置等。clone3与CLONE_PIDFD标志:5.3 内核可用,是更可扩展的clone版本。pidfd_open:5.3 内核及 2.36 glibc 版本可用,传入 pid 号可获取 pidfd,5.10 后可传PIDFD_NONBLOCK标志。pidfd_spawn/pidfd_spawnp:5.4 内核及 2.39 glibc 版本可用,类似posix_spawn,输出参数为 pidfd。getsockopt与SO_PEERPIDFD:6.5 内核及相应 glibc 版本可用,用于获取与套接字相关进程的 pidfd。recvmsg与SCM_PIDFD:6.5 内核及相应 glibc 版本可用,用于接收消息时获取发送者进程的 pidfd。- 各操作函数的特性及适用条件,如
pidfd_send_signal、pidfd_getpid、poll/select/epoll、waitid等。 - 后续提到的进程状态变化及相关影响,如僵尸进程等待获取退出码等。
- 未来可能的发展方向,如获取死进程的退出码等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。