NSTask> NSTextView,但在任务仍在处理时输出

| 我正在与整个XCode-Interface Builder-Cocoa-Objective-C shebang一起为C / C ++创建一个非常简单的IDE。我将NSSplitView文件窗口分为一个文本编辑器和一个NSTextView的另一个子类,我想使用它像一个终端来运行已编译的程序。我可以通过任务成功将stdout放入该NSTextView中, pipe-filehandle系统,但问题是,对于需要向scanf()或其他内容输入的程序,显然需要逐行进行,现在,文本视图仅在程序完成运行后才更新。我还没有将stdin绑定到任何地方,所以现在我要输入调试器控制台,但是例如,如果我的程序是
int input;  
printf(\"Enter some input: \");  
scanf(\"%d\", &input);  
printf(\"\\nSome more output blah blah blah.\\n\");
然后我什么也没得到,直到我在控制台中输入了输入,然后文本视图获取了文件句柄的全部内容,这将是两个printf语句一个接一个。根本不是很有用。那么,如何获得实时更新的文本视图?或者,是否存在一些神奇的简单方法来使视图表现得像终端机一样?不指望那个。作为参考,这是我设置任务,管道和文件句柄之后的小片段代码。
outview
是IBOutlet对象,代表所讨论的输出文本视图。谢谢!
[programTask launch];

NSData *data;
data = [programFileHandle availableData];

NSString *fileout;
fileout = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

NSRange endRange;
endRange.location = [[outview textStorage] length];
endRange.length = 0;
[outview replaceCharactersInRange:endRange withString:fileout];
    
已邀请:

要回复问题请先登录注册