_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. 包含以下清单常数之一或两者,定义。

  • _S_IWRITE
    允许的文本。

  • _S_IREAD
    允许读取。

  • _S_IREAD | _S_IWRITE
    允许读取和写入。

当给定时对两个常数,它们按位与运算符 ( OR 连接|). 如果不会写权限,该文件为只读。 请注意所有文件始终可读的;为只读权限是不可能的。 因此,架构 _S_IWRITE 和 _S_IREAD | _S_IWRITE 等效。

_wchmod 是 _chmod的宽字符版本;为 _wchmod 的 filename 参数是宽字符字符串。 _wchmod 和 _chmod 否则具有相同的行为。

此功能验证其参数。 如果 pmode 不是组合的某个清单常数也不会合并替代常数集,则忽略这些功能。 如果 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

有关更多兼容性信息,请参见中介绍的 兼容性

示例

// 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 " ); 
} 
  文本行。

FakePre-64b9658fc614468088a905b524eb3db6-70b634574e464068919296e816ccea22

.NET Framework 等效项

请参见

参考

文件处理

_access, _waccess

_creat, _wcreat

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_open, _wopen

_stat, _wstat功能