2015-06-16 2 views
1

Я пытаюсь запустить команду аэропорта для сканирования своих беспроводных сетей. В настоящее время подход заключается в использовании NSTask. Я запускаю его следующим образом:Цель-C: NSCommand «аэропорт -s» возвращается пустой

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); 

Проблема в том, что его выход поступает как «РЕЗУЛЬТАТ:» (пустой вывод). Кроме того, когда я запускаю ту же команду с опцией «-I», она правильно перечисляет мои текущие сетевые статусы. Поэтому я полагаю, что я ошибаюсь в том, как правильно читать вывод команды аэропорта с опцией -s. Может кто-нибудь подскажет, как правильно его прочитать?

ответ

0

Хорошо. По глубоко исследуя вопросы здесь, я нашел это в моих журналах консоли:

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 

Ну ... похоже, это вопрос разрешения. Я до сих пор расследую здесь.

EDITED # 1: Хорошо. Если ваше приложение изолировано от Apple Store, песочница запрещает NSTask использовать сканирование в аэропорту!