_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
случае вызывается недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, параметр 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
_fstati64
_fstat64
_fstat32i64
,_fstat64i32
_open
, _wopen
_stat
, _wstat
функции