site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com On Nov 18, 2009, at 1:54 PM, Godfrey van der Linden wrote:
I'm not 100% sure but I think that your child process inherits or can be made to inherit the parents mach ports.
This only applies to task special ports (bootstrap port, exception port, etc.).
So the trick I envisage is
1> Parent create a right and make it inheritable (?) 2> Parent calls fork 3> Parent waits on a message 4> Calls exec with an argument of the inherited port id in hex I'd guess and rendezvous can not happen
This seems pretty reliable, if ports can be inherited across a fork() which is a big if.
Finally if it doesn't work I know for a fact that it will work with unix-domain sockets.
There is the mach_ports_register() API, which stashes a bunch of ports so that a child task can obtain them with mach_ports_lookup(), but honestly, I don't even know if that works on our platform, and even if it does, a POSIX child process (created via fork(2)) may not necessarily be the same thing as Mach child process (created via task_create()). -- Damien Sorresso BSD Engineering Apple Inc. _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... This email sent to site_archiver@lists.apple.com