0
我已經閱讀使用NSTask這樣做的解決方案:他們都看起來非常非常長...因此,我設法使用此代碼做同樣的事情(它獲得標準輸出和標準錯誤):得到輸出的命令在ObjC
NSTask *task = [NSTask new];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:@[ @"-c", @"aCommand"]];
NSString *stringToRemove = [task description];
[task launch];
NSString *output = [[task description] stringByReplacingOccurrencesOfString:stringToRemove withString:@""];
使用此解決方案有什麼缺點嗎?有沒有更簡單的方法來過濾輸出?
[任務waitUntilExit]是否避免了獲得持續命令的完整輸出的問題? – user732274 2013-03-19 14:57:00
不是; 'waitUntilExit'將確保所有的輸出已經生成,但是你仍然需要一個'NSPipe'或'NSFileHandle'來消耗輸出,並且可能會用'readInBackgroundAndNotify:'這樣的方法來完成。 – bbum 2013-03-19 15:01:53