不能这样读取。Linux的pidfd可以供poll、select或epoll监测任务状态,出现可读事件并不表示描述符中放了一段退出信息。官方说明当前实现不能从该描述符读取数据,调用read会以EINVAL失败。因此,“已就绪”与“可用read拿到退出码”不是同一个接口承诺,不能把读取失败直接判断为系统损坏。

适用的是pidfd_open取得的PID文件描述符,先核真实对象,不把普通管道、日志文件或打开的进程目录当成相同类型。pidfd_open自Linux 5.3提供,具体标志还要另核版本。本文只按进程对象、未使用线程模式解释;如果工具请求了PIDFD_THREAD,观察单个线程退出与整个线程组结束的条件不同,不能混用。
观察时保留创建返回、监测的描述符、事件类型和读取错误。文档指出,按进程模式取得的描述符要到线程组最后一个线程退出后才可读;任务被回收后又有挂断事件。只看到某个线程结束,不足以推断进程对象已满足相同条件。事件记录与进程列表截图也要对应同一个对象和时点,而不是拿后来复用的数字比较。
若维护者需要等待自己的子任务,文档另说明可按waitid的适用规则处理;这不是把任意他人进程都当成自己子进程的许可。查询失败时先保留接口与错误,不反复read,不向客户任务发信号,也不靠结束进程制造可读事件。本文没有监测或读取客户进程的实际状态。
风险是把通用“可读”翻译成必有业务数据,随后错报任务完成或强杀仍在工作的进程。下一步交接对象类型、标志和原事件,由程序维护者选择正确的等待或状态处理方式;原业务是否完成仍需独立结果。岳麓区台式电脑用户可拨400-877-9605,仅准备去敏记录,不提供私人进程内容;电脑快修网提供信息展示及第三方维修对接,具体Linux检查是否支持及安排需当次确认。