私はobj-c
と解析からのターミナルコマンドを実行しています、それを達成するためにobjective-c
ターミナルOSX:「文字列」コマンドのコマンドライン開発ツールが必要です
から画面/ディスプレイのメーカーを取得する必要がありますその出力。
コマンド
ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r | strings -6
その私のシステム上で正常に動作しますが、私は、ユーザーのシステム上に自分のコードからまたはTerminal
のいずれかから同じコマンドを実行していたときに、それはいくつかをダウンロードするために私に尋ねるプロンプトを示していますすべてのユーザーのシステムでは不可能な開発ツールです。プロンプトの
スクリーンショット:私の端末で
コマンド結果
n:~ user$ ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r | strings -6
P .00 6 LP133WX3-TLA3 Color LCD n:~ user$
私はターミナルコマンドを実行するコードの下に与えられた
を使用しています0-(NSString*)runCommand:(NSString*)commandToRun;
{
NSString *[email protected]"";
@autoreleasepool {
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
NSArray *arguments = [NSArray arrayWithObjects:
@"-c" ,
[NSString stringWithFormat:@"%@", commandToRun],
nil];
NSLog(@"run command: %@",commandToRun);
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSPipe *errorPipe = [NSPipe pipe];
[task setStandardError:errorPipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
NSFileHandle *errorFile;
errorFile = [errorPipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSData* errorData;
errorData = [errorFile readDataToEndOfFile];
output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSString *errorOutput;
errorOutput = [[NSString alloc] initWithData: errorData encoding: NSUTF8StringEncoding];
}
return output;
}
コマンドの代替案や回避策を提案してください。
ご注意いただきありがとうございます。
'それをローカルで文字列でフィルタリングする-6' @daredevilを詳しく教えてください –
上記のコマンドをどのようにリモートコンピュータに送信しますか? – StefanS
実際には、私はアプリケーションで質問を提供しています。ユーザーはMacBookでアプリケーションを実行しており、アプリケーションはシステム情報をキャプチャしています。 –