• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Using NSPipe to get system command output
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Using NSPipe to get system command output


  • Subject: Re: Using NSPipe to get system command output
  • From: Ken Thomases <email@hidden>
  • Date: Mon, 13 Aug 2012 18:38:32 -0500

On Aug 13, 2012, at 5:42 PM, Kyle Sluder wrote:

> On Mon, Aug 13, 2012, at 02:17 PM, Charlie Dickman wrote:
>> I'm trying to get the output from a vm_stat command using the following
>> code. My app hangs in the [vmRead availableData] call as it should if
>> there is no data available but it never comes back. What am I doing
>> wrong? I have searched through the sample code on apples developer site
>> with no luck.
>>
>> 	NSPipe *vmPipe = [NSPipe pipe];
>> 	NSFileHandle *vmRead = [vmPipe fileHandleForReading];
>>
>> 	[vm setLaunchPath: @"/usr/bin/vm_stat"];	//	1 page = 4096 bytes
>> 	[vm setStandardOutput: vmPipe];
>> 	[vm launch];
>> 	NSData *vmData = nil;
>> 	int vmDataLength = 0;
>> 	do {
>> 		vmData = [vmRead availableData];
>> 		vmDataLength = [vmData length];
>> 	} while (vmDataLength != 0);
>
>
> You can't do this. You need to run the runloop.

For what?  Neither NSPipe nor NSFileHandle rely on the runloop except for the InBackgroundAndNotify methods, as far as I'm aware.  They are just thin wrappers around system calls.

You need to run the runloop to get notified of an NSTask's termination, too, but he's not relying on that.

Of course, he is potentially blocking his main thread, if this is run on the main thread, which is always bad.  But the code should work.

Regards,
Ken


_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Using NSPipe to get system command output
      • From: Kyle Sluder <email@hidden>
References: 
 >Using NSPipe to get system command output (From: Charlie Dickman <email@hidden>)
 >Re: Using NSPipe to get system command output (From: Kyle Sluder <email@hidden>)

  • Prev by Date: Re: Using NSPipe to get system command output
  • Next by Date: Re: Using NSPipe to get system command output
  • Previous by thread: Re: Using NSPipe to get system command output
  • Next by thread: Re: Using NSPipe to get system command output
  • Index(es):
    • Date
    • Thread