_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 等效项
请参见
参考
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32