NSTask> NSTextView,但在任务仍在进行时输出

时间:2011-04-17 08:09:25

标签: objective-c cocoa xcode stdout 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];

0 个答案:

没有答案