_chmod, _wchmod

ファイルのアクセス許可の設定を変更します。

構文

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

パラメーター

filename
既存のファイルの名前。

pmode
ファイルのアクセス許可の設定。

戻り値

これらの関数は、アクセス許可の設定が正常に変更された場合に 0 を返します。 戻り値 -1 は失敗を示します。 指定したファイルが見つからなかった場合は、errnoパラメーターが無効なerrno場合は ENOENT、次のように設定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 、関数は単にそれらを無視します。 有効な場合filenameNULL、「パラメーターの検証」の説明に従って、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、 errnoEINVAL に設定され、関数から -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 関数