Compartilhar via


_chmod, _wchmod

Altera as configurações de permissão de arquivo.

Sintaxe

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

Parâmetros

filename
Nome do arquivo existente.

pmode
Configuração de permissão para o arquivo.

Retornar valor

Essas funções retornarão 0 se a configuração de permissão for alterada com êxito. Um valor retornado de -1 indica uma falha. Se o arquivo especificado não puder ser encontrado, será definido como ; se um parâmetro for inválido, errno será definido como EINVALENOENT. errno

Comentários

A _chmod função altera a configuração de permissão do arquivo especificado pelo filename. A configuração de permissão controla o acesso de leitura e gravação para o arquivo. A expressão de inteiro pmode contém uma ou ambas as seguintes constantes de manifesto, definidas em SYS\Stat.h.

pmode Significado
_S_IREAD Somente a leitura é permitida.
_S_IWRITE Gravação permitida. (Na verdade, permite leitura e gravação.)
_S_IREAD | _S_IWRITE Leitura e gravação permitidas.

Quando as duas constantes são informadas, elas são associadas com o operador OR bit a bit (|). Se a permissão de gravação não for concedida, o arquivo será somente leitura. Observe que todos os arquivos são sempre legíveis; não é possível dar permissão somente gravação. Portanto, os modos _S_IWRITE e _S_IREAD | _S_IWRITE são equivalentes.

A função _wchmod é uma versão de caractere largo da função _chmod; o argumento filename para _wchmod é uma cadeia de caracteres larga. Caso contrário, _wchmod e _chmod se comportam de forma idêntica.

Essa função valida seus parâmetros. Se pmode não for uma combinação de uma das constantes manifestas ou incorporar um conjunto alternativo de constantes, a função simplesmente as ignora. Se filename for NULL, o manipulador de parâmetros inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, errno será definido como EINVAL e a função retornará -1.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar isso, confira Estado global no CRT.

Mapeamentos de rotina de texto genérico

Rotina Tchar.h _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tchmod _chmod _chmod _wchmod

Requisitos

Rotina Cabeçalho necessário Cabeçalho opcional
_chmod <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wchmod <io.h> ou <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Manipulação de arquivos
_access, _waccess
_creat, _wcreat
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
_stat, _wstat funções