Jus*_*tin 2 c macos cocoa system
我正在创建一个必须使用该system(const char*)功能来执行"繁重工作" 的应用程序,并且我需要能够为用户提供粗略的进度百分比.例如,如果操作系统正在为您移动文件,它会为您提供一个进度条,其中包含移动的数据量以及窗口上显示的要移动的数据量.我需要这样的东西.如何才能做到这一点?
编辑:基本上,我给用户提供了以压缩格式保存文件的选项.如果他们这样做,它会正常保存然后运行此代码:
char* command = (char*)[[NSString stringWithFormat:@"tar -jcvf %@.tar.bz2 %@", saveurl.path, filename] cStringUsingEncoding:NSUTF8StringEncoding];
system(command);
Run Code Online (Sandbox Code Playgroud)
有时这需要一段时间(应用处理视频文件),所以我希望能够给他们一个估计的完成时间.
我正在创建一个应用程序,必须使用该
system(const char*)功能来做一些"繁重的工作"
不,它不必system()像这样使用.事实上,它不应该.有许多其他API用于运行子进程,几乎所有这些都会更好.在Cocoa中,最明显的更好的选择是NSTask.
在任何情况下,除了子进程本身之外,没有什么可以告诉子进程正在进行多少进展.如果你运行的程序没有提供报告进度的方法,那就没什么希望了.没有其他任何东西可以说明子流程的目的或目标是什么,更不用说判断实现目标的程度.
即使程序确实报告了进度,您也需要一种方法来接收该信息. system()不允许这样做. NSTask是,popen()或者手动分叉和执行程序.