Поделиться через


_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 функции