我在Objective C中使用C,我想从Console中捕获stdout
到UIView
。
以下是我要说的话:
print(stdout, v=toplevel_eval(v));
答案 0 :(得分:0)
除了你用C语写作之外,我不知道你对C,“Unix”和Cocoa I / O有多了解 - 所以你可能已经知道了一些。
这是一个可能的解决方案,它看起来比它复杂。
读:
pipe
,dup2
和read
。dispatch_async
以及如何获取GCD队列。pipe
和dup2
通常与fork
和exec
一起使用,以启动进程并对该进程标准输入/输出进行写入/读取。你将要做的是使用一些相同的基本思想,所以查找这个常见模式的例子将有助于你理解这些调用是如何工作的。以下是大学的一些说明:Pipe, Fork, Exec and Related Topics。概要
使用dispatch_async
计划一个块来处理数据的读写。该块将:
pipe
创建管道和dup2
连接标准输出 - 文件描述符1 - 它。read
从管道获取可用数据。数据读取将采用字节数组。NSString
dispatch_async
指定主队列来执行此操作就是这样。现在,您的块将在后台同时执行,读取C代码写入标准输出并将其添加到视图中。
如果您遇到困难,可以提出一个新问题,显示您编写的代码并说明哪些代码无效。
HTH