2014-05-19 2 views
0

응용 프로그램 내에서 명령 프롬프트를 통해 프로그램을 실행 중입니다. 이것은 문제없이 OSX 10.8.5, 10.9.x 버전에서 잘 작동합니다. 하지만 내 응용 프로그램도 10.7.5에서 실행해야합니다. 명령이 실행될 때 동일한 코드가 10.7.5에서 실패합니다. 실행 된 명령 문자열을 보았습니다. 이것이 맞습니다. 이 문제에 대한 아이디어가 있습니까?세그먼트 오류 오류 on 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; 

답변

0

문제의 해결책을 찾았습니다. 명령을 실행 한 실행 파일이 낮은 OSX 버전 용으로 컴파일되지 않았습니다.

-mmacosx-version-min = 10.7 플래그를 추가하고 실행 파일을 다시 컴파일하면 문제가 해결되었습니다.

Segmentation 오류가 발생하는 경우 : exe 명령을 실행할 때 11 또는 "잘못된 명령 : 4"오류 메시지가 표시되면 먼저 추가 메모리 관련 디버깅을 시작하기 전에 -mmacosx-version-min을 확인하십시오.