gpt4 book ai didi

cocoa 系统()进展?

转载 作者:行者123 更新时间:2023-12-03 16:25:13 28 4
gpt4 key购买 nike

我正在创建一个必须使用system(const char*)函数来完成一些“繁重工作”的应用程序,并且我需要能够为用户提供粗略的进度百分比。例如,如果操作系统正在为您移动文件,它会为您提供一个进度条,其中会显示已移动的数据量以及要移动的数据量,并显示在窗口上。我需要这样的东西。如何做到这一点?

编辑:基本上,我为用户提供了以压缩格式保存文件的选项。如果他们这样做,它会正常保存然后运行以下代码:

char* command = (char*)[[NSString stringWithFormat:@"tar -jcvf %@.tar.bz2 %@", saveurl.path, filename] cStringUsingEncoding:NSUTF8StringEncoding];
system(command);

有时这需要一点时间(应用程序处理视频文件),所以我希望能够为他们提供预计的完成时间。

最佳答案

I am creating an application that must use the system(const char*) function to do some "heavy lifting"

不,它不必像这样使用system()。事实上,不应该。还有很多其他用于运行子进程的 API,几乎所有这些都会更好。在 Cocoa 中,最明显更好的选择是 NSTask。

无论如何,除了子流程本身之外,没有任何东西可以告诉子流程取得了多少进展。如果您正在运行的程序不提供报告进度的方法,那么希望就渺茫了。没有任何其他方法可以预测子流程的目的或目标是什么,更不用说判断它距离实现该目标还有多远。

即使程序确实报告进度,您也需要一种方法来接收该信息。 system() 不允许这样做。 NSTask 会这样做,就像 popen() 或手动 fork 并执行程序一样。

关于 cocoa 系统()进展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15696997/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com