Можно ли сделать системный вызов в Objective-C?
У меня есть следующий код:
if (!system("ls -l")) { NSLog(@"Successfully executed"); } else { NSLog(@"Error while executing the command"); }
Как получить вывод?
Спасибо
Это идеальный кандидат для использования -[NSFileManager contentsOfDirectoryAtPath:error:] вместо переноса встроенной функции оболочки и анализа выходных данных. Для команд общего назначения, где вам нужен вывод - и где нет никакой эквивалентной функциональности «бесплатно» в Какао (просто требуется время, чтобы изучить доступные API) - NSTask , как правило, гораздо лучшая альтернатива system().
-[NSFileManager contentsOfDirectoryAtPath:error:]
system()
Вы должны использовать NSTask . Если вам просто нужны результаты ls, в Какао есть более подходящие оболочки для файловой системы.
ls
Если вы хотите сделать это так, как вы можете использовать popen. Это может также использоваться для чтения вывода. Но ответы об использовании решений Objective-C, вероятно, лучше.
popen
Objective-C не запрещает программе запускать system() или любой из его эквивалентов.
CocoaTouch делает.