Я нашел что-то с 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: // StackOverflow.com/questions/3444178/nstask-nspipe-objective-c-command-line-help –
Привет: это NSTask * server = [NSTask new]; \t [серверный комплектLaunchPath: @ "/ bin/sh"]; \t [server setArguments: [NSArray arrayWithObject: @ "ioreg -c BNBMouseDevice | grep BatteryPercent"]]; \t \t NSPipe * outputPipe = [труба NSPipe]; \t [server 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 encoding: NSUTF8StringEncoding] autorelease]; – cocos2dbeginner
, но в нем нет такого файла или каталога, но если я делаю это в терминале: ioreg -c BNBMouseDevice | grep BatteryPercent // это работает! Что случилось? – cocos2dbeginner