Cocoa/Objective-C Выполнение командной строки оболочки
Это, наверное, глупый вопрос, но как я могу выполнить команду оболочки из моего приложения Cocoa?
У меня есть команда как строка "command", но вы можете легко манипулировать данными по мере необходимости.
Нет необходимости получать возвращаемое выходное значение.
Ответы
Ответ 1
NSTask довольно легко сделать это. Для синхронного вызова вы можете использовать что-то вроде этого фрагмента:
NSString *path = @"/path/to/executable";
NSArray *args = [NSArray arrayWithObjects:..., nil];
[[NSTask launchedTaskWithLaunchPath:path arguments:args] waitUntilExit];
Вызов -waitUntilExit
завершает работу перед продолжением. Если задача может быть асинхронной, вы можете удалить этот вызов и просто позволить NSTask сделать это.
Ответ 2
Если вы просто хотите что-то запустить и не заботитесь о коде вывода или возврата (например, вы хотите коснуться файла), вы можете просто сделать
system("touch myfile.txt");
Легко, как это.
Ответ 3
NSTask
Используя класс NSTask, ваша программа может запускать другую программу в качестве подпроцесса и может контролировать выполнение этих программ.