• sid, pid, gid


    (一)

    参考 :https://unix.stackexchange.com/questions/18166/what-are-session-leaders-in-ps

    命令: ps xao pid,ppid,pgid,sid,comm 显示所有ID,添加uid可以显示user id

    或者名令:ps -eaf显示,usr,pid,ppid

    leveldb@river:~/store$ ps xao pid,ppid,pgid,sid,comm
    PID PPID PGID SID COMMAND
    1    0    1 1   init
    2    0    0 0   kthreadd
    3    2    0 0   ksoftirqd/0
    5    2    0 0   kworker/0:0H
    7    2    0 0   rcu_sched
    8    2    0 0   rcuos/0

    问题:init进程的父进程id是0,这是什么进程?

    答:https://unix.stackexchange.com/questions/83322/which-process-has-pid-0 。0号进程是swapper or sched,是一个内核的一部分,而非用户态进程。init进程是内核激发的第一个进程。

       2号进程父进程也是0,不是init进程是所有进程的祖宗吗?

    答:2号进程也是由内核创建,和1号进程一起是两个直接由内核创建的进程。或者说,1号进程是所有用户进程的祖先,2号进程是所有内核进程的祖先。

      其他进程基本都是2号进程的子进程!?

    (二)sid

    session的概念。

    一个进程调用了setsid()后,他就创建一个新的session,并成为这个新session的领导。但是一个group的领导是不能这样做的,因为这样的话,group的领导将他自己脱离了原来的session,加入了另一个session,这样两个session就有一个同样的group,这违背了原则。

    所以,创建后台damon的通用做法是这样的。进程首先fork,fork后父进程退出,子进程称为了init的子进程,并不属于任何group的领导,但这时候子进程仍然处于当前terminal的session中,会随着terminal的关闭而关闭,如果此时子进程调用setsid()创建一个新的session,那么就会成为后台damon,不受当前terminal关闭的影响。

  • 相关阅读:
    python 文件 笔记
    python 模块、包 笔记
    类、对象
    python 函数 笔记
    测试价值体现
    断舍离-笔记2
    Happy 2006 POJ
    Triangle War POJ
    Complete the sequence! POJ
    放苹果 POJ
  • 原文地址:https://www.cnblogs.com/bettersky/p/6759548.html
Copyright © 2020-2023  润新知