chmod函数是用来更改文件权限的。函数原型和依赖的头文件如下:
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
int fchmod(int fd, mode_t mode);
chmod是对指定的文件进行操作,而fchmod则是对已经打开的文件进行操作。所以它们的第一个参数不一样。下面给出一个实例。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int fd = open("a",O_RDWR);
if (-1 == fd)
{
perror("open fail");
exit(1);
}
if(-1 == fchmod(fd,0777))
{
perror("fchmod fail");
exit(1);
}
if (-1 == chmod("b",0777))
{
perror("fchmod fail");
exit(1);
}
close(fd);
return 0;
}
运行结果如下所示:
注意到文件的时间并没有改变,这是因为chmod函数更新的是i节点最近一次被更改的时间,而ls命令列出的是最后一次修改文件内容的时间。