Вопрос

Возможно ли выполнить системный вызов в Objective-C?

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

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

Как получить результат?

Спасибо

Это было полезно?

Решение

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

Другие советы

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

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

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

CocoaTouch так и делает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top