[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