我發現了一些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
它的作品!
有什麼不對?
這裏有很多關於SO已經使用`NSTask`和`NSPipe`來做這種事情的例子,例如, HTTP://計算器。com/questions/3444178/nstask-nspipe-objective-c-command-line -help – 2011-01-07 17:04:24
你好,試試這個:NSTask * server = [NSTask new]; \t [server setLaunchPath:@「/ bin/sh」]; \t [server setArguments:[NSArray arrayWithObject:@「ioreg -c BNBMouseDevice | grep BatteryPercent」]]; \t \t NSPipe * outputPipe = [NSPipe pipe]; \t [server setStandardInput:[NSPipe pipe]]; \t [server setStandardOutput:outputPipe]; \t \t [server launch]; \t [server waitUntilExit]; \t [server release]; \t \t NSData * outputData = [[outputPipe fileHandleForReading] readDataToEndOfFile]; \t NSString * outputString = [[[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding] autorelease]; – cocos2dbeginner 2011-01-07 17:15:04
但它說沒有這樣的文件或目錄,但如果我在終端中這樣做:ioreg -c BNBMouseDevice | grep BatteryPercent //它的工作原理!有什麼不對? – cocos2dbeginner 2011-01-07 17:15:33