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]
