On Jan 18, 2012, at 11:59 AM, Andrew wrote:

> I am trying to write a program that maintains different installs of
> another program including launching the program. To do so, I am using
> NSTask. Now when I quit my cocoa app. the NSTask app dies. The task
> that the NSTask is running is a Java program, not sure if that makes a
> difference. According to what I have read, the application should keep
> running even when the parent task exits. I am running my cocoa app
> from in XCode4, not sure if that has any effect on it. Could it be
> that I am not specifying standard* streams so when the parent app
> quits, those streams are closed and thus the process?
> 
> I can probably find out the answer by trying different things, but I'd
> like to get a better insight for what is going on and why the child
> task is terminating.

Any special handling of NSTask aside, Mac OS X uses Unix-based process control 
which closes all child processes when the parent is closed. Since your 
sub-program is Java you may be able to detach the child process. This is 
usually accomplished by the sub-program by executing a low-level fork(). It may 
need to be followed by an exec() to fully detach the process. Note that you 
can't do this with Cocoa/Objective-C (at least Apple says you shouldn't…)

Alternatively (and probably preferably) you could use launchd/Launch Services 
as recommended. Useful reading: 
http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html

HTH,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"

_______________________________________________

Cocoa-dev mailing list ([email protected])

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 [email protected]

Reply via email to