我需要从objective-c
为了实现它,我正在运行obj-c
的终端命令并解析其输出。
命令
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$
我使用下面给出的代码执行终端命令
-(NSString*)runCommand:(NSString*)commandToRun;
{
NSString *output=@"";
@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;
}
请提供类似命令的替代方法或任何解决方法。
非常感谢你的关注。
答案 0 :(得分:1)
你不能真的,最好的选择是使用ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r
将其发送到你的主mac,然后用strings -6
在本地过滤。
编辑:在评论中您的详细信息后,您应该:
在他们的Mac上运行ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r > ~/Desktop/report.txt
告诉他们发送你的文件。假设您在桌面上收到了它,然后在本地计算机上运行strings -6 ~/Desktop/report.txt
。