Системный вызов Unix в Objective-C - PullRequest
2 голосов
/ 16 декабря 2009

Можно ли сделать системный вызов в Objective-C?

У меня есть следующий код:

if (!system("ls -l")) {
    NSLog(@"Successfully executed"); 
} else {
      NSLog(@"Error while executing the command"); 
}

Как получить вывод?

Спасибо

Ответы [ 4 ]

8 голосов
/ 16 декабря 2009

Это идеальный кандидат для использования -[NSFileManager contentsOfDirectoryAtPath:error:] вместо переноса встроенной функции оболочки и анализа выходных данных. Для команд общего назначения, где вам нужен вывод - и где нет никакой эквивалентной функциональности «бесплатно» в Какао (просто требуется время, чтобы изучить доступные API) - NSTask , как правило, гораздо лучшая альтернатива system().

6 голосов
/ 16 декабря 2009

Вы должны использовать NSTask . Если вам просто нужны результаты ls, в Какао есть более подходящие оболочки для файловой системы.

4 голосов
/ 16 декабря 2009

Если вы хотите сделать это так, как вы можете использовать popen. Это может также использоваться для чтения вывода. Но ответы об использовании решений Objective-C, вероятно, лучше.

0 голосов
/ 17 марта 2010

Objective-C не запрещает программе запускать system() или любой из его эквивалентов.

CocoaTouch делает.

...