在一个小应用程序中,我正在运行终端命令,drutil erase。我正在使用NSTask
。在终端中执行此命令时,它将显示一个持续更新的ASCII进度条。但是,我无法使用NSTask
在outputpipe或errorpipe中读取此信息。有没有人知道如何获得drutil的过程百分比?
答案 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而不是管道来进行行缓冲的进程间流。