使用NSTask在目标C中运行SH脚本比从Terminator直接执行脚本要慢

问题描述

我创建了一个sh / Python脚本作为执行文件。但是,当我使用NSTask在Objective C程序中通过单击按钮运行此脚本时,进度时间比直接在MacOS Terminal中执行脚本要慢得多。

我从stackoverlfow中读取了一些信息,以使用nice -n,但这无济于事。 任何人都知道通过Objective C执行脚本时如何加快处理过程。

要执行的脚本代码:

- (NSString *)runCommand:(NSString*) script{
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];

NSArray *arguments = [NSArray arrayWithObjects:
                      @"-c",[NSString stringWithFormat:@"%@",script],nil];
[task setArguments:arguments];

NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput:pipe];

NSPipe* stdErrPipe = nil;
stdErrPipe = [NSPipe pipe];
[task setStandardError: stdErrPipe];

NSFileHandle *file = [pipe fileHandleForReading];
NSFileHandle *filErr = [stdErrPipe fileHandleForReading];

[task launch];
NSData *data = [file readDataToEndOfFile];
NSData *dataError = [filErr readDataToEndOfFile];
[task waitUntilExit];

NSInteger exitCode = task.terminationStatus;

if (exitCode != 0)
{
    NSString *outputErr = [[NSString alloc] initWithData:dataError encoding:NSUTF8StringEncoding];
    NSLog(@"Error!");
    return [@"Error!" stringByAppendingString:outputErr];
}
NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return output;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...