读取NSTask的ASCII进度条

时间:2010-12-11 12:27:41

标签: objective-c nstask

在一个小应用程序中,我正在运行终端命令,drutil erase。我正在使用NSTask。在终端中执行此命令时,它将显示一个持续更新的ASCII进度条。但是,我无法使用NSTask在outputpipe或errorpipe中读取此信息。有没有人知道如何获得drutil的过程百分比?

1 个答案:

答案 0 :(得分:1)

使用asynctask.m,您可以在Terminal.app中将curl的进度指示器打印到stderr!

这种方法也适用于“drutil erase”。

// asynctask.m code is available at:  
// http://www.cocoadev.com/index.pl?NSPipe
fprintf(stderr, "\r\033[0K%s", [s UTF8String]);

也许通过NSTask打印ASCII进度条的另一种方法是将上面的fprintf行与PseudoTTY.app结合使用,后者使用伪ttys而不是管道来进行行缓冲的进程间流。

http://www.cocoadev.com/index.pl?NSTask