NSTask를 사용하여 명령을 실행했지만 명령을 실행할 수 없습니다.코코아 앱에서이 명령을 실행하는 방법은 무엇입니까?
이 내 명령입니다
ioreg -c BNBMouseDevice | grep BatteryPercent
가 어떻게 내 코코아 응용 프로그램이 실행할 수 ? (물론 프로그래밍 방식으로)
대단히 감사합니다.
NSTask *server = [NSTask new];
[server setLaunchPath:@"/bin/sh"];
[server setArguments:[NSArray arrayWithObject:@"ioreg -c BNBMouseDevice | grep BatteryPercent"]];
NSPipe *outputPipe = [NSPipe pipe];
[server setStandardInput:[NSPipe pipe]];
[server setStandardOutput:outputPipe];
[server launch];
[server waitUntilExit];
[server release];
NSData *outputData = [[outputPipe fileHandleForReading] readDataToEndOfFile];
NSString *outputString = [[[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding] autorelease];
을하지만, 그런 파일이나 디렉토리를 말한다하지만 난 터미널에서이 작업을 수행하는 경우 :
나는 이것을 시도
ioreg -c BNBMouseDevice | grep BatteryPercent
는 작동한다!
무엇이 잘못 되었나요?
이미 이런 종류의 일을하기 위해'NSTask'와'NSPipe'를 이미 사용하고 있습니다. http : // stackoverflow.com/questions/3444178/nstask-nspipe-objective-c-command-line-help –
안녕하세요. NSTask * server = [NSTask new]; \t [서버 setLaunchPath : @ "/ bin/sh"]; \t [serverArray : NSArray arrayWithObject : @ "ioreg -c BNBMouseDevice | grep BatteryPercent"]]; \t \t NSPipe * outputPipe = [NSPipe pipe]; \t [서버 setStandardInput : [NSPipe 파이프]]; \t [서버 setStandardOutput : outputPipe]; \t \t [서버 시작]; \t [server waitUntilExit]; \t [서버 릴리스]; \t \t NSData * outputData = [[outputPipe fileHandleForReading] readDataToEndOfFile]; \t NSString * outputString = [[[NSString alloc] initWithData : outputData 인코딩 : NSUTF8StringEncoding] autorelease]; – cocos2dbeginner
하지만 그 파일이나 디렉토리를 말하지 않지만 터미널에서 이렇게하면 : ioreg -c BNBMouseDevice | grep BatteryPercent // 작동합니다! 무엇이 잘못 되었나요? – cocos2dbeginner