C의 동등한 기능 :어떻게 목표 C에서 chmod를()를 수행하는
chmod(MY_FILE, 0777);
목표 C에서가? 수행하지 않고 기존의 잠긴 파일에 쓰려고합니다.
chmod +x MY_FILE
터미널에 있습니다.
C의 동등한 기능 :어떻게 목표 C에서 chmod를()를 수행하는
chmod(MY_FILE, 0777);
목표 C에서가? 수행하지 않고 기존의 잠긴 파일에 쓰려고합니다.
chmod +x MY_FILE
터미널에 있습니다.
C의 chmod()
을 사용할 수 있습니다.
설명서 및 관련 기능을 보려면 터미널에 man 2 chmod
을 입력하십시오.
IMHO, @newbieMACUser는 C 방식이 아니라 ObjC 방식을 요청했으며 C 방식은 라이브러리가 포함되도록 요구합니다. ObjC를 사용하면 [Amin Negm-Awad의 대답] (http://stackoverflow.com/a/27478061/105539)이 더 적합하며 기본 Objective C 파일로 얻는 표준 기초 자료보다 더 많은 추가 기능이 필요하지 않습니다. – Volomike
코코아를 사용하면됩니다.
NSTask *changePerms = [[NSTask alloc] init];
[changePerms setLaunchPath:@"/bin/chmod"];
NSArray *chmodArgs = [NSArray arrayWithObjects:@"666", @"/Users/abc/hello.txt", nil];
[changePerms setArguments:chmodArgs];
[changePerms launch];
는이 시스템을 사용 NSFileManager를 클래스
NSDictionary* attr = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithShort:0766], NSFilePosixPermissions, NULL];
NSError *error = nil;
[[NSFileManager defaultManager] setAttributes:attr ofItemAtPath:@"/Users/abc/Desktop/test.txt" error:&error];
를 사용하여 다른 방법으로()이 도움이
system("chmod 777 /Users/abc/Desktop/test.txt");
희망 전화입니다!
첫 번째 코드 스 니펫은 _awful_입니다. 'chmod()'가 즉시 사용 가능할 때 외부 명령으로 포설하는 것은 정말로 제로 포인트입니다. – nneonneo
원시 C 코드를 사용하거나 프레임 워크 API에 의존하십시오. 필자가 제시 한 두 옵션 모두 프레임 워크를 사용하고 있습니다. –
chmod가 훨씬 더 큰 값을 처리 할 수 있기 때문에'[NSNumber numberWithUnsignedLong : ___]'을 사용하는 것이 더 나을 것입니다. 증명을 위해서, 파일에'chmod u + s'를 실행 한 다음'stat -r'을 실행하고 세번째 매개 변수를 봅니다. (적어도 내 Mac에서는 3 번째입니다.) 서명 된 short가 보유 할 수있는 수보다 큰 수인 32768이고, 부호없는 short가 보유 할 수있는 수는 65535입니다. chmod와 동일한 수를 다른 테스트 파일을 보면 chmod가이 부호없는 long 값을 허용한다는 것을 알 수 있습니다. – Volomike
코코아의 -setAttributes:ofItemAtPath:error:
을 사용하면이 작업을 수행 할 수 있습니다.
[[NSFileManager defaultManager] setAttributes:@{ NSFilePosixPermissions : @0666 }
ofItemAtPath:…
error:&error];
물론 권한이 필요합니다.
Objective-C는 C의 수퍼 세트입니다. iOS/OSX에서 실행할 수있는 모든 C 코드는 objective-c 파일에 붙여 넣기 만하면 작동합니다. – Linuxios
@Linuxios, 아마도'int NSArray;'를 제외하면 – paxdiablo
@paxdiablo : True. – Linuxios