【问题标题】:Segmentation fault error on 10.7.510.7.5 上的分段错误错误
【发布时间】:2014-05-20 11:09:30
【问题描述】:

我正在通过应用程序中的命令提示符执行程序。这在 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;

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

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

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

    如果您在执行 exe 命令时收到 Segmentation fault: 11 或“Illegal instruction: 4”错误消息,您可能需要先检查 –mmacosx-version-min,然后再进行与内存相关的进一步调试。

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 2017-09-17
      • 2010-10-30
      • 2015-01-20
      • 2015-09-18
      相关资源
      最近更新 更多