コマンドを実行するために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 [server setLaunchPath:@ "/ bin/sh"]; \t [サーバー配列のアーギュメント:[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