2017-11-13 4 views
0

pid를 파일에 쓰는이 코드를 실행할 수 없습니다.파일에 기록하기 Xcode MacOS

NSString *text = [NSString stringWithFormat:@"%d\n", getpid()]; 
NSError *error = nil; 

if (![text writeToFile:@"/tmp/Frontend.pid" atomically:YES encoding:NSUTF8StringEncoding error:&error]) { 
    NSLog(@"Cannot write PID file %@: %@", @"/tmp/Frontend.pid", error); 
    return NO; 
} 

이것은 내가 얻은 오류입니다.

2017-11-13 20 : 19 : 18.742171 + 0530 TestThread [7648 : 273326] PID 파일 /tmp/Frontend.pid를 쓸 수 없습니다 : Error Domain = NSCocoaErrorDomain Code = 513 "저장 권한이 없습니다. 파일 "Frontend.pid"를 "tmp"폴더에 저장하십시오. " }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}이 디렉토리에 대한 권한을 777로 바꿨지만 여전히 ' 충분한 권한이 있습니다. 도와주세요.

답변

1

음, 드디어 해결하겠습니다. 다음은 xcode의 새로운 프로젝트의 기본 설정입니다.이 프로젝트는 전체 파일 작업을 망쳤습니다. 필자는 인 타이틀먼트 파일에서이 2 개의 노브를 끄고 갈 수 있었다.

${project_name}.entitlements

0

/tmp는 macOS에서/private/tmp에 대한 심볼릭 링크입니다. 링크 또는 대상의 권한을 변경 했습니까?

$ ls -ld /tmp 
[email protected] 1 root wheel 11 Oct 14 14:55 /tmp -> private/tmp 
$ ls -ld /private/tmp 
drwxrwxrwt 16 root wheel 512 Nov 13 06:43 /private/tmp 

이것은 루트 만이 링크를 수정할 수 있지만 사람이 디렉토리에 쓸 수 있어야한다는 것을 의미 :

예를 들어, 내 컴퓨터에서 나는 다음을 참조하십시오. 사실, 나는 그 디렉토리에 파일을 쓸 수있다. t 고정 비트로 인해/tmp (또는 루트 또는 휠)에 파일 자체를 소유 한 사용자 만 파일을 삭제하거나 이름을 바꿀 수 있습니다.

덮어 쓸 수없는 권한으로 /tmp/Frontend.pid에 파일이 없는지 확인합니다 (writeToFile : 원자 적으로 : 인코딩 : 오류가 기존 파일을 덮어 씁니다).

+0

확인했습니다. 이름과 같은 파일이 없습니다. 코드 스 니펫을 실행할 수 있습니까? – alDiablo

+0

예, 경로를 NSString * 경로 (예 : 정의되지 않았으므로)로 설정하고 LoggerWarn을 NSLog로 설정하도록 예제를 실행했습니다. 그것은 나를 위해 작동합니다. – greymouser

+0

다른 제안 사항이 있습니까? 나는 여전히 같은 문제에 직면 해있다. 프로젝트의 일부 설정을 변경 했습니까? – alDiablo

관련 문제