宋宝华: 一图理解终端、会话、 进程组、进程关系

药不能停,直接进入正题,本文3分钟读完。文中涉及到的缩写如下:

  • PID: 进程(process) ID

  • PPID:父进程(parent process) ID

  • PGID:进程组(process group) ID

  • SID:会话(session )ID

文中a.out对应的代码如下:

a.out代码

main()

{

    fork();

    while(1);

}

实验方法:


开一个terminal,运行三个a.out,得到3个进程组,6个a.out进程:

宋宝华: 一图理解终端、会话、 进程组、进程关系

关系图如下:


宋宝华: 一图理解终端、会话、 进程组、进程关系

解释如下:


  • bash的PPID是terminal

  • bash的PGID,SID都是bash自己的PID;

  • 3个a.out进程组所有6个进程的SID都是bash的PID;

  • 3个a.out进程组中的各个父进程PID会成为该进程组中所有进程的PGID;

进程树pstree关系如下:

宋宝华: 一图理解终端、会话、 进程组、进程关系

通过ps命令验证如下:


宋宝华: 一图理解终端、会话、 进程组、进程关系

您的打赏是小弟持续原创的动力 ^-^

相关阅读:


宋宝华:让Linux的段错误(segmentation fault)不再是一个错误

宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)

Linux中父进程为何要苦苦地知道子进程的死亡原因?

Linux阅码场原创精华文章汇总

更多精彩,尽在"Linux阅码场",扫描下方二维码关注

宋宝华: 一图理解终端、会话、 进程组、进程关系

点一点右下角”在看”,为阅码场打Call~