Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Valor retornado
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, errno é definido como ENOENT; se um parâmetro for inválido, errno é definido como EINVAL.
Comentários
A _chmod função altera a configuração de permissão do arquivo especificado por 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 de manifesto ou incorporar um conjunto alternativo de constantes, a função simplesmente as ignorará. Se filename for NULL, o manipulador de parâmetro inválido será chamado, 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