_chmod
, _wchmod
Dosya izni ayarlarını değiştirir.
Sözdizimi
int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );
Parametreler
filename
Var olan dosyanın adı.
pmode
Dosya için izin ayarı.
Dönüş değeri
İzin ayarı başarıyla değiştirilirse bu işlevler 0 döndürür. -1 dönüş değeri hataya işaret eder. Belirtilen dosya bulunamadıysa olarak errno
ayarlanır ENOENT
; parametre geçersizse olarak errno
ayarlanır EINVAL
.
Açıklamalar
İşlev, _chmod
tarafından filename
belirtilen dosyanın izin ayarını değiştirir. İzin ayarı, dosyaya okuma ve yazma erişimini denetler. Tamsayı ifadesi pmode
, SYS\Stat.h içinde tanımlanan aşağıdaki bildirim sabitlerinden birini veya her ikisini içerir.
pmode |
Anlamı |
---|---|
_S_IREAD |
Yalnızca okuma izni verilir. |
_S_IWRITE |
Yazma izni verilir. (Aslında, okuma ve yazma izin verir.) |
_S_IREAD | _S_IWRITE |
Okuma ve yazma izin verilir. |
Her iki sabit de verildiğinde bit düzeyinde veya işleciyle (|
) birleştirilir. Yazma izni verilmezse, dosya salt okunurdur. Tüm dosyaların her zaman okunabilir olduğunu unutmayın; yalnızca yazma izni vermek mümkün değildir. Bu nedenle, ve _S_IREAD | _S_IWRITE
modları _S_IWRITE
eşdeğerdir.
_wchmod
, öğesinin _chmod
geniş karakterli bir sürümüdür; filename
bağımsız değişkeni _wchmod
geniş karakterli bir dizedir. _wchmod
ve _chmod
aksi takdirde aynı şekilde davran.
Bu işlev parametrelerini doğrular. Bildirim sabitlerinden birinin birleşimi değilse veya alternatif bir sabit kümesine sahipse pmode
işlev bunları yoksayar. ise filename
NULL
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, errno
olarak ayarlanır EINVAL
ve işlevi -1 döndürür.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bunu değiştirmek için bkz . CRT'de Genel durum.
Genel metin yordamı eşlemeleri
Tchar.h yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tchmod |
_chmod |
_chmod |
_wchmod |
Gereksinimler
Yordam | Gerekli başlık | İsteğe bağlı üst bilgi |
---|---|---|
_chmod |
<io.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
_wchmod |
<io.h> veya <wchar.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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
Ayrıca bkz.
Dosya işleme
_access
, _waccess
_creat
, _wcreat
_fstat
, _fstat32
, _fstat64
, , _fstati64
, _fstat32i64
, _fstat64i32
_open
, _wopen
_stat
, _wstat
işlevler