• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

2가지 질문이 있습니다.

19.04.08 01:05 작성 조회수 85

0

  1. f계열 API에서는 파일 생성시 기본 권한이 정해져있고, 저수준 API처럼 변경은 만든 후에 할 수 있는건가요?
  2. flag와 mode의 차이를 정확히 모르겠습니다.
  3. 둘 다 비슷한 일들을 하는 것 같은데 무슨 차이인거죠?

    mode는 단순히 권한만 주는 것인지요?

답변 1

답변을 작성해보세요.

0

fopen()으로 파일을 생성할 때 생성되는 파일의 권한은 umask 설정값에 따라 결정됩니다. umask가 0022(8진수)라면 생성되는 파일은 0644로 생성됩니다. 파일의 권한 변경은 chmod() API를 이용해 가능합니다.

open()의 flag와 mode는 의미상 차이가 있습니다.

flag 파라미터는 지금 open() API로 파일을 열 때 어떻게 여는가에 대한 옵션이 들어갑니다. 예를 들어 read-write가 가능하도록 열겠다던가, 파일이 없으면 생성하겠다던가 하는 옵션이 들어갑니다. O_xxx 형식으로 되어 있죠.

mode 파라미터는 파일을 생성할 때에만 필요한 파라미터 입니다. mode 파라미터에는 파일을 생성할 때 파일의 권한을 무엇으로 할 지 넘겨줘야 합니다. 쉬운 예를 들자면 0644로 넘길 수 있습니다. man page를 보시면 S_IRWXU 와 같은 매크로도 사용하실 수 있습니다.

도움이 되셨길 바랍니다:)