You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

getppid返回的是原始父进程还是当前父进程?

关于Linux getppid系统调用的返回值说明

getppid() 返回的是当前进程的当前父进程PID,而非创建该进程的原始父进程PID。

当原始父进程早于当前进程退出时,当前进程会成为孤儿进程,被系统对应的托管进程收养(默认是PID为1的init/systemd进程,部分场景下也可能是进程所属会话的领导者进程),此时getppid()的返回值会自动更新为收养它的新父进程的PID,和原始父进程的PID会存在差异。

注:仅当父进程彻底退出的场景下getppid()返回值才会变更,父进程处于休眠、阻塞等非运行状态时,返回值依然为原始父进程PID。

你可以通过以下简单逻辑验证该特性:

  • 父进程调用fork()生成子进程后立刻退出
  • 子进程sleep 2~3秒等待父进程退出完成,再调用getppid()打印返回值
  • 最终输出的PID不会是已经退出的原始父进程的PID,而是托管孤儿进程的父进程PID

内容的提问来源于stack exchange,提问作者rolen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:18:01