_chmod、_wchmod_chmod, _wchmod

ファイルのアクセス許可の設定を変更します。Changes the file-permission settings.

構文Syntax

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

パラメーターParameters

ファイル名filename
既存のファイルの名前。Name of the existing file.

pmodepmode
ファイルのアクセス許可の設定。Permission setting for the file.

戻り値Return Value

これらの関数は、アクセス許可の設定が正常に変更された場合に 0 を返します。These functions return 0 if the permission setting is successfully changed. 戻り値-1 はエラーを示します。A return value of -1 indicates failure. 指定したファイルが見つからなかった場合、 errnoENOENTに設定されます。パラメーターが無効な場合、 errnoEINVALに設定されます。If the specified file could not be found, errno is set to ENOENT; if a parameter is invalid, errno is set to EINVAL.

RemarksRemarks

Chmod関数は、 filenameによって指定されたファイルのアクセス許可の設定を変更します。The _chmod function changes the permission setting of the file specified by filename. アクセス許可の設定は、ファイルに対する読み取りと書き込みのアクセスを制御します。The permission setting controls the read and write access to the file. 整数式pmodeには、sysh に定義されている次のマニフェスト定数のいずれかまたは両方が含まれています。The integer expression pmode contains one or both of the following manifest constants, defined in SYS\Stat.h.

pmodepmode 説明Meaning
_S_IREAD_S_IREAD 読み取りのみが許可されます。Only reading permitted.
_S_IWRITE_S_IWRITE 書き込みが許可されます。Writing permitted. (実際には、読み取りと書き込みが許可されます)。(In effect, permits reading and writing.)
_S_IREAD | SIREAD_ __S_IREAD | _S_IWRITE 読み取りと書き込みが許可されます。Reading and writing permitted.

両方の定数が指定されている場合は、ビットごとの | or 演算子 () と結合されます。When both constants are given, they are joined with the bitwise or operator (|). 書き込みアクセス許可が与えられない場合、ファイルは読み取り専用になります。If write permission is not given, the file is read-only. ファイルはすべて常に読み取り可能です。書き込みのみのアクセス許可を与えることはできません。Note that all files are always readable; it is not possible to give write-only permission. このため、モード _S_IWRITE_S_IREAD | _S_IWRITEは同等です。Thus, the modes _S_IWRITE and _S_IREAD | _S_IWRITE are equivalent.

_wchmodのワイド文字バージョンです。 _wchmodfilename引数はワイド文字列です。_wchmod is a wide-character version of _chmod; the filename argument to _wchmod is a wide-character string. それ以外では、 _wchmodchmodは同じように動作します。_wchmod and _chmod behave identically otherwise.

この関数は、パラメーターを検証します。This function validates its parameters. Pmodeがマニフェスト定数のいずれかの組み合わせではない場合、または別の定数セットを組み込んでいる場合、関数は単にそれらを無視します。If pmode is not a combination of one of the manifest constants or incorporates an alternate set of constants, the function simply ignores those. FilenameNULLの場合は、「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If filename is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、 errnoEINVALに設定され、この関数は-1 を返します。If execution is allowed to continue, errno is set to EINVAL and the function returns -1.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tchmod_tchmod _chmod_chmod _chmod_chmod _wchmod_wchmod

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header オプション ヘッダーOptional header
_chmod_chmod <io.h><io.h> <sys/types.h>、<sys/stat.h>、<errno.h><sys/types.h>, <sys/stat.h>, <errno.h>
_wchmod_wchmod <io.h> または <wchar.h><io.h> or <wchar.h> <sys/types.h>、<sys/stat.h>、<errno.h><sys/types.h>, <sys/stat.h>, <errno.h>

互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.

Example

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

関連項目See also

ファイル処理File Handling
_access、_waccess_access, _waccess
_creat、_wcreat_creat, _wcreat
_fstat、_fstat32、_fstat64、_fstati64、_fstat32i64、_fstat64i32_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open、_wopen_open, _wopen
_stat、_wstat 関数_stat, _wstat Functions