10.7.5上的分段错误错误

时间:2014-05-19 03:15:03

标签: objective-c macos cocoa

我正在我的应用程序中通过命令提示符执行程序。这在OSX 10.8.5,10.9.x版本上运行正常,没有任何问题。但我的应用程序也需要在10.7.5上运行。当命令执行时,10.7.5上的相同代码失败。我查看了执行的命令字符串,这是正确的。对这个问题有什么看法吗?

我收到以下错误:

/bin/sh: line 1:  1028 Segmentation fault: 11 

以下是我用来执行命令的代码。

NSTask *task;
    task = [[NSTask alloc] init];
    [task setLaunchPath: @"/bin/sh"];

    NSArray *arguments = [NSArray arrayWithObjects:
                          @"-c" ,
                          [NSString stringWithFormat:@"%@", commandToRun],
                          nil];
    //NSLog(@"run command: %@",commandToRun);
    [task setArguments: arguments];

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

    NSFileHandle *file;
    file = [pipe fileHandleForReading];

    [task launch];

    NSData *data;
    data = [file readDataToEndOfFile];

    NSString *output;
    output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
    return output;

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案。执行该命令的可执行文件未针对较低的OSX版本进行编译。

添加标志-mmacosx-version-min = 10.7并重新编译可执行文件解决了这个问题。

如果您收到分段错误:11或"非法指令:4"执行exe命令时出现错误消息,您可能需要先检查-mmacosx-version-min,然后再进行与内存相关的调试。