有没有办法从 system() 获取日志;就像我做的时候一样system("open com.apple.nike");
我应该得到Couldn't open application: com.apple.nike. Reason: 8, application disabled or restricted
。这将在我的 iOs 7 设备上运行
Thanks
EDIT://
我知道这不是exactly你问什么,但也许有更好的方法。
如果你想运行一个命令(比如open com.apple.nike
),我认为使用NSTask实际上是以编程方式做到这一点的最佳方法。NSTask
将允许您运行命令,就像system()
,但对处理这些命令的标准输出有很好的支持,而无需在系统日志文件上执行文件 I/O。
例如,这是一个使用的示例NSTask
列出目录内容(ls -altr
),并捕获输出NSString
:
- (void) listDir {
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/ls"];
[task setArguments: [[NSArray alloc] initWithObjects: @"-altr", nil]];
NSPipe *pipe= [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file = [pipe fileHandleForReading];
[task launch];
NSData *data = [file readDataToEndOfFile];
NSString *output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"result: %@", output);
}
这将使 open 命令的输出与系统日志文件中的任何其他内容分开。
NSTask
是 iOS 上的私有 API,但与 OS X 上存在的许多 API 一样,它们实际上在 iOS 上可用(只是不要假设 Apple 允许它们出现在 App Store 中!)。
要使用它,您需要下载 NSTask.h 标头,并将其包含在您的项目中。
这是旧版本,但我敢打赌它仍然可能有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)