만약 내가 다음과 같은 C 코드를 가지고 : 나는 컴파일하고 실행하지 않을 경우 부당이 생성지구상의 무엇 ...? 파이썬 C 코드에 의해 생성 된 파일의 파일 권한
int main(int argc, char **arg)
{
int x = open("testfilefromc", O_RDWR | O_CREAT);
return 0;
}
:
-rw-r----- 1 joewass staff 0B 31 Jan 21:17 testfilefromc
그러나 다음과 같은 C 코드를, 파이썬 모듈로 컴파일 :
const char *filename = "testfilefrompython";
context->fd = open(filename, O_RDWR | O_CREAT);
이 수행합니다
---------- 1 joewass staff 165B 31 Jan 21:09 testfilefrompython
놀랍지도 않지만 파일을 만든 코드는 다음 번에 열 수 없습니다!
왜 파일이 제로 권한으로 생성됩니까? 그리고 C에서 컴파일 된 동작이 파이썬 모듈과 다른 이유는 무엇입니까? 코드를 실행하는 Python 프로그램을 실행하고 있습니다.
가치가있는 내용은 나중에 mmap
입니다.
감사합니다.
조
편집 : 나는, 내가 chmod
가이 문제를 해결 할 수있어 문제가 이유입니까?
EDIT 2 : 선택 사항이 아닌 선택적 인수가 누락되었음을 지적하기 위해 Rosh Oxymoron에게 감사드립니다. TRWTF은 첫 번째 예제가 전혀 작동하지 않는다는 것입니다!
아마도 C 코드 어딘가에'umask()'를 호출했을 것입니까? –
'strace'에서 코드를 실행하십시오. 'open' /'creat'과'chmod' /'fchmod' 호출에주의하십시오. –
@ Frédéric - 내 코드에는 umask가 없습니다. 파이썬이 무엇을하고 있는지 누가 알겠는가! – Joe