_chmod, _wchmod

파일 권한 설정을 변경합니다.

구문

int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );

매개 변수

filename
기존 파일의 이름입니다.

pmode
파일에 대한 권한 설정입니다.

반환 값

권한 설정을 성공적으로 변경한 경우 이러한 함수는 0을 반환합니다. 반환 값 -1은 실패를 나타냅니다. 지정한 파일을 찾을 errno 수 없으면 매개 변수가 ENOENT유효하지 errno 않으면 EINVAL설정됩니다.

설명

이 함수는 _chmod .에 지정된 filename파일의 사용 권한 설정을 변경합니다. 권한 설정은 파일에 대한 읽기 및 쓰기 액세스를 제어합니다. 정수 식 pmode에는 SYS\Stat.h에 정의된 다음 매니페스트 상수 중 하나 또는 둘 다가 포함되어 있습니다.

pmode 의미
_S_IREAD 읽기만 허용합니다.
_S_IWRITE 쓰기를 허용합니다. 실제로는 읽기 및 쓰기를 모두 허용합니다.
_S_IREAD | _S_IWRITE 읽기 및 쓰기를 허용합니다.

두 상수가 모두 지정되면 비트 또는 연산자(|)와 조인됩니다. 쓰기 권한이 지정되지 않은 경우 파일은 읽기 전용입니다. 모든 파일은 항상 읽을 수 있습니다. 쓰기 전용 권한을 부여할 수 없습니다. 따라서 _S_IWRITE_S_IREAD | _S_IWRITE 모드는 동일합니다.

_wchmod_chmod의 와이드 문자 버전이며, filename 에 대한 _wchmod 인수는 와이드 문자열입니다. 그렇지 않으면_wchmod_chmod 이 동일하게 작동합니다.

이 함수는 해당 매개 변수의 유효성을 검사합니다. 매니페스트 상수 중 하나의 조합이 아니거나 대체 상수 집합을 통합하는 경우 pmode 함수는 단순히 무시합니다. 이 경우 filename 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출NULL됩니다. 계속해서 실행하도록 허용된 경우 errnoEINVAL 로 설정되고 함수는 -1을 반환합니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 변경하려면 CRT의 전역 상태를 참조하세요.

일반 텍스트 루틴 매핑

Tchar.h 루틴 _UNICODE 정의 _MBCS 되지 않음 _MBCS 정의 _UNICODE 정의
_tchmod _chmod _chmod _wchmod

요구 사항

루틴에서 반환된 값 필수 헤더 선택적 헤더
_chmod <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wchmod <io.h> 또는 <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// crt_chmod.c
// This program uses _chmod to
// change the mode of a file to read-only.
// It then attempts to modify the file.
//

#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

// Change the mode and report error or success
void set_mode_and_report(char * filename, int mask)
{
   // Check for failure
   if( _chmod( filename, mask ) == -1 )
   {
      // Determine cause of failure and report.
      switch (errno)
      {
         case EINVAL:
            fprintf( stderr, "Invalid parameter to chmod.\n");
            break;
         case ENOENT:
            fprintf( stderr, "File %s not found\n", filename );
            break;
         default:
            // Should never be reached
            fprintf( stderr, "Unexpected error in chmod.\n" );
       }
   }
   else
   {
      if (mask == _S_IREAD)
        printf( "Mode set to read-only\n" );
      else if (mask & _S_IWRITE)
        printf( "Mode set to read/write\n" );
   }
   fflush(stderr);
}

int main( void )
{
   // Create or append to a file.
   system( "echo /* End of file */ >> crt_chmod.c_input" );

   // Set file mode to read-only:
   set_mode_and_report("crt_chmod.c_input ", _S_IREAD );

   system( "echo /* End of file */ >> crt_chmod.c_input " );

   // Change back to read/write:
   set_mode_and_report("crt_chmod.c_input ", _S_IWRITE );

   system( "echo /* End of file */ >> crt_chmod.c_input " );
}

A line of text.

      A line of text.Mode set to read-only
Access is denied.
Mode set to read/write

참고 항목

파일 처리
_access, _waccess
_creat, _wcreat
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
_stat, _wstat 함수