您当前的位置:首页 > 计算机 > 系统应用 > Linux

运行 tail|grep 后按下 Ctrl-C 的过程中发生了什么

时间:12-14来源:作者:点击数:
城东书院 www.cdsy.xyz

在 shell 中运行 tail|grep 时发生了什么

  1. 运行 tail
    • shell调用 fork 产生子进程
    • 重置信号处理函数为 SIG_DFL
    • 产生新的进程组,并将子进程设置为该进程组的leader
    • exec tail
  2. 运行 grep
    • shell 调用 fork 产生子进程
    • 重置信号处理函数为 SIG_DFL
    • 将进程加入到 tail 产生的进程组中
    • exec tail
  3. 将新产生的进程组放到前台,控制终端
    • tcsetpgrp(STDIN_FILENO, tail 进程组);

当按下 Ctrl-c 时发生了什么

根据 setpgrp manual page 的说法,按下 Ctrl-c 后:

  • 终端产生 SIGINT 信号
  • 前台进程组中的所有进程都会接收到 SIGINT 信号然后退出(默认动作)
  • shell 通过调用 waitpid 清理进程表中子进程信息
城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐