Objective c 目标C:NSCommand“;机场-s";返回空

Objective c 目标C:NSCommand“;机场-s";返回空,objective-c,macos,wifi,nstask,Objective C,Macos,Wifi,Nstask,我正在尝试运行机场命令扫描我的无线网络。现在,方法是使用NSTask。我按如下方式运行它: NSString *command = [NSString stringWithFormat:@"/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s"]; NSTask *task = [[NSTask alloc] init]; [task setLaunchPath:@

我正在尝试运行机场命令扫描我的无线网络。现在,方法是使用NSTask。我按如下方式运行它:

NSString *command = [NSString stringWithFormat:@"/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s"];
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];
NSArray *args = [NSArray arrayWithObjects:@"-c", command, nil];
[task setArguments: args];
NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
[task launch];
[task waitUntilExit];
NSData *data = [[pipe fileHandleForReading] readDataToEndOfFile];
NSString *string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"RESULT: %@", string);

问题是它的输出是“RESULT:”(空输出)。此外,当我使用“-I”选项运行同一命令时,它会正确列出我当前的网络状态。因此,我想我在如何正确读取带有-s选项的airport命令的输出方面犯了错误。有人能给我一个如何正确阅读的提示吗?

好的。通过深入调查这里的问题,我在控制台日志中发现:

PMsandboxd: ([57108]) <MyApp>(57108) deny mach-lookup com.apple.airport
PMsandboxd: ([57108]) <MyApp>(57108) deny system-socket
PMsandboxd: ([57120]) sh(57120) deny file-read-data /dev/ttys003
PMairportd: Error: Scan failed (1)
PMsandboxd: ([57120]) airport(57120) deny system-socket
PMsandboxd:([57108])(57108)拒绝马赫查找com.apple.airport
PMsandboxd:([57108])(57108)拒绝系统套接字
PMsandboxd:([57120])sh(57120)拒绝文件读取数据/dev/ttys003
PMairportd:错误:扫描失败(1)
PMsandboxd:([57120])机场(57120)拒绝系统套接字
嗯。。。看起来这是一个权限问题。我还在这里调查

编辑#1:好。如果您的应用程序是针对Apple Store的沙盒,沙盒会拒绝NSTask使用airport scan