존재하지 않는 파일을 열려면 다음 C 코드를 작성했습니다. 나는 ls -l
명령을 실행할 때 umask를 0002로 설정되어 있지만C에서 open() 함수로 만든 파일의 기본 액세스 모드는 무엇입니까?
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
int main(){
int fd = open("test.c",O_WRONLY | O_CREAT);
printf("%d\n",fd);
close(fd);
}
, 내가 만든 파일에 대한 다음과 같은 출력을 얻을.
-r--rws--T 1 urohit011 urohit011 0 Feb 14 22:35 test.c
새 파일 이름으로 코드를 실행하면 액세스 모드가 변경됩니다. 여기에 두 가지 질문이 있습니다.
- 해당 파일의 기본 액세스 모드는 0002 인의 umask 이후 664을해야하지?
- 코드가 새 파일 으로 실행될 때 액세스 모드가 변경되는 이유는 무엇입니까?
''test.c "'를 파일 이름으로 사용 하시겠습니까? 소스 파일을 덮어 쓰지 않기를 바랍니다. –
@Someprogrammerdude "test.c"라는 이름은 프로그램을 실행하기 전에 존재하지 않으므로 문제가 될 것이라고 생각하지 않습니다. –