/ / NSTask висить на readDataToEndOfFile - aim-c, nstask

NSTask висить на readDataToEndOfFile - object-c, nstask

Спроба прочитати дані, повернені з NSTaskвикликає зависання, яке ніколи не повертається. Я "перевірив, що мій запущений сценарій насправді повертає дані як stdout, так і stderr. Це простий сценарій оболонки з двома рядками, який відправляє одну лінію в stdout, а іншу в stderr.

Висновок NSLog говорить

Отримано ручку: <NSConcreteFileHandle: 0x10010a800>

А потім просто зависає. Це код, який я використовую.

    NSPipe *stderr = [NSPipe pipe];
NSPipe *stdout = [NSPipe pipe];

NSTask *task = [[NSTask alloc] init];
task.standardError = stderr;
task.standardOutput = stdout;
task.standardInput = [NSPipe pipe];
task.launchPath = @"/tmp/f";

[task launchPath];
[task waitUntilExit];

NSFileHandle *fh = [stderr fileHandleForReading];

NSLog(@"Got handle: %@", fh);

[fh readDataToEndOfFile];

NSLog(@"Read it");

Відповіді:

0 для відповіді № 1

Це тому, що ви ніколи насправді не запускали своє завдання

[task launchPath];

Це просто повертає шлях завдання як рядок, він фактично не запускає завдання. Ти хочеш

[task launch];