The Rosetta startup delay is significant because my PPC-only child can't run 
until Rosetta is running - and it appears to not be running until the 1st PPC 
program since reboot has been run.

The child's pid does not change - but it appears the child does not run at all 
until Rosetta has finished launching - even thought isRunning says my PPC-only 
child has been launched.

The problem that I am trying to solve is that this particular method cannot 
exit until 1) I know the child is running, 2) the child has a valid pid that I 
can get via -processIdentifier.

I am trying to delay until the child is running and has a valid pid. If I run 
the exact same code a second time by quitting everything and running it again - 
everything works (becaus Rosetta is already running). If I reboot, the problem 
comes back because Rosetta is not running after reboot.

One more thing I failed to mention: I don't own the code for the child process 
- ever. It has to work with arbitrary compiled-only binaries that I didn't 
write.

Erg




________________________________
From: Greg Guerin <glgue...@amug.org>
To: list-cocoa-dev <cocoa-dev@lists.apple.com>
Sent: Tuesday, June 9, 2009 6:05:34 PM
Subject: Re: [NSTask] -launch return

Erg Consultant wrote:

> I forgot to mention that the problem case is exceptional: the problem I have 
> is only in the case of an Intel version of the app trying to launch a 
> PPC-only child the first time after reboot: -launch returns immediately, and 
> isRunning returns YES, but there is like a 3 second delay between the time 
> Rosetta begins to run and my binary is actually launched - it appears that 
> isRunning returns YES as soon as Rosetta is started - not when my PPC child 
> is actually started.

Why is Rosetta's startup delay significant?  Does the child process ID change 
as a consequence?

If the startup delay were being caused by a slow disk, the child process might 
be similarly delayed in reaching its main() entry point, but that doesn't mean 
the child process doesn't have a valid pid.

Exactly what problem are you trying to solve?

Are you trying to delay until the child process has reached a certain point in 
its execution?

If so, then you should write the child process so it signals upon reaching a 
certain point in its execution.  There are various ways to do that, including 
Posix semaphores, sentinel files in the file-system, shared memory, simple 
pipes, or traditional Posix signals.

  -- GG
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/erg_consultant%40yahoo.com

This email sent to erg_consult...@yahoo.com



      
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to