_chmod
, _wchmod
파일 권한 설정을 변경합니다.
구문
int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );
매개 변수
filename
기존 파일의 이름입니다.
pmode
파일에 대한 권한 설정입니다.
반환 값
권한 설정을 성공적으로 변경한 경우 이러한 함수는 0을 반환합니다. 반환 값 -1은 실패를 나타냅니다. 지정한 파일을 찾을 errno
수 없으면 매개 변수가 ENOENT
유효하지 errno
않으면
설명
이 함수는 _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
인 경우 Parameter Validation를 참조하세요. 계속해서 실행하도록 허용된 경우 errno
는 EINVAL
로 설정되고 함수는 -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
함수