[Devel] Re: Processes with multiple pid_t values
Eric W. Biederman
ebiederm at xmission.com
Mon Jan 8 20:22:10 PST 2007
Sukadev Bhattiprolu <sukadev at us.ibm.com> writes:
> Hmm. I have this mail sitting in my sent folder since Dec 18 but do
> not see it in the Containers archives. If you already received, sorry
> to spam. Appreciate any clarifications of my doubt :-)
There is something about your usage of the word doubt that does not
quite feel correct. I wonder if it is just me.....
> For my example above, I guess you are saying we want the following ids.
>
> PID PPID PGID SID
>
> init pid ns 1234 1233 1230 1220
>
> child pid ns 1 0 1 1
>
>
> If so, my confusion is that for the process 1234, following are true
> right ?
>
> task_pgrp(current) != task_session(current) != task_pid(current)
>
> If we associate a list of [namespace, id] tuples with each struct pid,
> then three different struct pids would have the same id in the child
> namespace (unless the process calling clone() is both a session and
> process group leader).
I guess it depends on how we set it up, it all depends on how the groups
are formed.
There is no reason to believe any particular realtionship between
the pid pgrp and session of the calling process from which we
inherit these things. If we can make it all work without doing the
equivalent of setsid() at clone time I think it is a better implementation.
However by default /sbin/init does call setsid() at which point we know
we have the relationship: pid == pgrp == session.
So once setsid() is called (the common case) we will have the id relationship
above. In fact we force that relationship for /sbin/init today at kernel
startup time.
Eric
_______________________________________________
Containers mailing list
Containers at lists.osdl.org
https://lists.osdl.org/mailman/listinfo/containers
More information about the Devel
mailing list