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

为何父进程执行kill(pid,SIGTERM)终止的是子进程而非自身?

原因解释

这是fork()调用的返回值特性和代码分支逻辑共同决定的:

  • fork()调用成功后会生成两个独立运行的进程,父子进程拿到的fork()返回值完全不同:
    • 父进程拿到的返回值是子进程的PID(正整数)
    • 子进程拿到的返回值是0
  • 你代码里的kill(pid, SIGTERM)写在else分支中,只有pid != 0时才会执行,也就是只有父进程会运行这段代码。此时父进程中pid变量存的就是子进程的PID,调用kill传入这个参数,自然是向子进程发送终止信号,终止的就是子进程。
  • 子进程只会进入if(pid == 0)的分支,死循环打印Child ,根本不会执行到kill相关的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:09:02