读取NSTask的ASCII进度条

发布于 2024-10-07 13:57:48 字数 172 浏览 5 评论 0原文

在一个小应用程序中,我正在运行终端命令 drutil擦除。我正在使用 NSTask。当您在终端中执行此命令时,它将向您显示一个不断更新的 ASCII 进度条。但是,我无法使用我的 NSTask 在我的输出管道或错误管道中读取此信息。有谁知道如何获取 drutil 进程的百分比?

In a little app, I'm running a terminal command, drutil erase. I'm using a NSTask. When you execute this command in Terminal, it will show you an ASCII progress bar which is continuously updated. However, I'm not able to read this information in my outputpipe or errorpipe using my NSTask. Does anyone has an idea how to to obtain the percentage of drutil's process?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生一个溪 2024-10-14 13:57:48

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

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

// 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 结合起来,它使用伪 tty 而不是管道来进行行缓冲的进程间流。

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

Using asynctask.m you can print the progress indicator of curl to stderr in Terminal.app!

This approach should work for "drutil erase" as well.

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

Perhaps yet another way to print an ASCII progress bar via NSTask would be to combine the fprintf line above with PseudoTTY.app, which uses pseudo-ttys instead of pipes for line-buffered inter-process streams.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文