_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> |
<io.h>, <sys/stat.h>, <sys/types.h> |
_wchmod |
<io.h> or <wchar.h> |
<io.h>, <sys/stat.h>, <sys/types.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-bc89f7c285624d3cb826901fe36fe060-d7ebd4b3906c4ce48a45908af54f75f9