_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
がマニフェスト定数の 1 つの組み合わせではない場合、または定数の代替セットが組み込まれている場合、関数は単にそれらを無視します。 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> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// 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
、 _fstat64
、 _fstati64
、 _fstat32i64
、 _fstat64i32
_open
, _wopen
_stat
、_wstat
関数