2009-08-27 2 views
6

모든/그룹/소유자 읽기 및 쓰기 권한을에서는 mkfifo 파일 권한이 제대로 실행되지

mkfifo("/tmp/dumbPipe", 0666) 

을 제공해야하지만 내 C 프로그램에서 다음 줄 내가 코드를 실행하고 쓰기의 허가 비를 확인하면 비트가 설정된, 나는 tmp 디렉토리에 파이프를 만드는거야 때문에이 문제가, 소유자가 동일한

prw-r--r-- 

끝낼? cmd 줄에서 chmod 666을 실행하면 모든 사용 권한이 올바르게 설정됩니다.

답변

9

이것은 매뉴얼을 인용하는 주석이없는 게시물입니다. Brievity 등 남자 3에서는 mkfifo에서

인용구 :

그것은 일반적으로 프로세스의 umask에 의해 수정된다 : 생성 된 파일의 권한 (~ umask를 모드 &)입니다. | 사람 2의 umask에서

견적

프로세스의 umask에 대한 일반적인 기본값은 S_IWGRP입니다 S_IWOTH (8 진수 022). 오픈 에 mode 인수 (2) 지정 일반적인 경우 :

 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH 

    (octal 0666) when creating a new file, the permissions on the resulting file will be: 

     S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH 

    (because 0666 & ~022 = 0644; i.e., rw-r--r--). 
0

살람, 나는 그것이 알고 늦었지만 다른 사용자를 위해 내가 한 경우에도이 댓글 를 작성하는 선택 정확한 0666 권한으로, "프로세스의 파일 모드 생성"이라는 또 다른 요소가 있다는 것을 알아야합니다. 따라서 질문은 다음과 같습니다.

현재 프로세스 파일 모드 생성을 변경하는 방법은 무엇입니까?

답변 : 프로그램의 시작 부분에 사용 umask를 (허가) -이 도움이 될

http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

의 허가로 0000을 제공합니다.

관련 문제