我正在阅读NSNotificationCenter的NSFileHandleReadCompletionNotification消息以接收来自NSTask的消息。问题是我所调用的命令行程序对输出行来说比较慢,而且似乎NSFileHandleReadCompletionNotification消息的发布相对较少(我猜是什么时候缓冲区填满了)。我可以为NSFileHandleReadCompletionNotification使用较小的缓冲区吗?
是否有另一个通知消息,我可以使用它会张贴通知或每一行,或有办法使缓冲区更小?
编辑:为了清楚起见,我读了NSFileHandle documentation中缓冲区大小“模仿底层操作系统的缓冲区大小”,所以我希望还有其他一些技巧。
NSFileHandle不包装C stdio流;它包装文件描述符。 'setvbuf'将不起作用。 (即使文件句柄在内部由流支持,您也无法访问该流;创建自己的流并设置其缓冲模式不会影响文件句柄的流)。 – 2009-12-29 01:06:17
我很确定彼得是对的。我尝试了你的建议(通过向我的Python任务添加-u标志),并没有任何改变。 我迄今为止唯一一个尝试过的工作是在Python脚本的输出中添加一堆空格,这看起来非常可怕。 – oldpatricka 2009-12-29 03:33:40