/ / Put `stdout` v` NSTextView` pri spustení príkazu a - kakao, užívateľské rozhranie, príkazový riadok, stdout

Pri spustení príkazu "NSTextView" položte `stdout` - kakao, používateľské rozhranie, príkazový riadok, stdout

Vytváram aplikáciu na výrobu kakaa, ktorá bude musieť spustiť rails Príkaz. Tento príkaz generuje výstup a prúdi ho stdout, Chcem ukázať tento výstup používateľovi v NSTextView (takže základný tok stdout na NSTextView). Moja aplikácia by nemala "visieť" pri spustení príkazu (napr git príkaz trvá dlho, kým sa dokončí nahrávanie). Nezaujíma ma, ako by som mal spustiť príkaz, pokiaľ môžem nastaviť pracovný adresár.

Použitie rámca Ruby pre kakao nie je žiadnou možnosťou, pretože takisto potrebujem urobiť pre príkazy, ktoré nie sú rubínové git.

Môže mi niekto pomôcť? Vďaka

odpovede:

2 pre odpoveď č. 1

Budete musieť použiť NSTask trieda.

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 ];

Potom môžete použiť popisovač súborov na získanie stdout.
Pracovný adresár môžete nastaviť pomocou tlačidla setCurrentDirectoryPath metóda.
Argumenty je možné nastaviť pomocou setArguments metóda.


0 pre odpoveď č. 2

ak potrebujete údaje používať počas čítania, použite prístup s NSNotification ktorý je opísaný v tento príspevok na cocoabuilder.com.

V podstate sa to nastavuje NSPipe objekt, spája stdout NSTask na potrubie a počúva NSFileHandleReadToEndOfFileCompletionNotification potrubia na spracovanie údajov, ktoré boli tlačené do potrubia.