On Feb 20, 2013, at 10:31 PM, Kyle Sluder wrote:

> On Feb 20, 2013, at 8:30 PM, Jens Alfke <j...@mooseyard.com> wrote:
> 
>> On Feb 20, 2013, at 8:22 PM, Kyle Sluder <k...@ksluder.com> wrote:
>> 
>>> You can accomplish this without writing to the file system, but it
>>> involves foregoing NSTask. Fork, close stdin in the child process, open
>>> a pipe (so that the child gets the read end in fd 0), then exec the tool
>>> with "/dev/stdin" as the filename argument.
>> 
>> D’ohh! I’d forgotten about /dev/stdin. But why does this require abandoning 
>> NSTask? Its API supports redirecting input/output. Just call -[NSTask 
>> setStandardInput:].
> 
> Because you can't use CF (and by extension, Foundation) after calling fork.

But with NSTask and NSPipe a) it's all taken care of for you, you don't need to 
do anything yourself after the fork; and b) it using pipe() and either 
fork()+exec() or posix_spawn() behind the scenes anyway.  There's no use of 
high-level frameworks required in the subprocess.

Regards,
Ken


_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to