_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 に設定されます。
解説
ファイルのアクセス許可の設定が filename で指定した _chmod の関数 *。*アクセス許可の設定はファイルへの読み取りおよび書き込みアクセスを制御します。式は整数 pmode SYS \ Stat.h に次のマニフェスト定数 1 のいずれかまたは両方を定義して格納されます。
_S_IWRITE
許可される書き込みます。_S_IREAD
許可される読み取り。_S_IREAD | _S_IWRITE
許可される読み取りと書き込み。
定数が両方とも指定するとOR のビット処理演算子と結合 (|).書き込みアクセス許可を指定しない場合ファイルは読み取り専用です。すべてのファイルが常に読み取り可能であることに注意してください ; 書き込み専用アクセス許可を与えることはできません。したがって_S_IWRITE モードと _S_IREAD | _S_IWRITE は同じです。
_wchmod 関数は、_chmod 関数のワイド文字バージョンです。_wchmod 関数の引数 filename は、ワイド文字列です。それ以外では、_wchmod と _chmod の動作は同じです。
この関数は、パラメーターを検証します。pmode がマニフェスト定数の 1 種類の組み合わせで別の定数を組み込む関数はは無視します。filename が NULL の場合は、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。実行の継続が許可 errno は EINVALおよび関数の戻り値 (-1 に設定されます。
汎用テキスト ルーチンのマップ
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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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 " );
}
テキスト行。
テキスト行。 読み取り専用モードの設定へ アクセスが拒否されました。 への読み取り / 書き込みモードの設定