Я создаю Приложение Какао, которое должно будет работать rails
команда. Эта команда генерирует вывод и передает его потоком к stdout
. Я хочу показать этот вывод пользователю в NSTextView
(таким образом, basicly передают потоком stdout
к NSTextView
). Мое приложение не должно 'зависать', когда команда работает (например, git
команда занимает много времени, чтобы закончить загружать). Я действительно не забочусь о том, как я должен выполнить команду, пока я могу установить рабочий каталог.
Используя платформу Ruby для Какао не опция, поскольку я также должен сделать это для нерубиновых команд как git
.
Кто-либо может помочь мне?Спасибо
Вам нужно будет использовать класс NSTask .
NSTask * task;
NSPipe * pipe;
NSFileHandle * fileHandle;
task = [ [ NSTask alloc ] init ];
pipe = [ NSPipe pipe ];
fileHandle = [ pipe fileHandleForReading ];
[ fileHandle readInBackgroundAndNotify ];
[ task setLaunchPath: @"/bin/ls" ];
[ task setStandardOutput: pipe ];
[ task setStandardError: pipe ];
[ task launch ];
Затем вы можете использовать дескриптор файла для получения стандартного вывода.
Рабочий каталог можно установить с помощью метода setCurrentDirectoryPath .
Аргументы можно установить с помощью метода setArguments .