stat()/fstat()/lstat()
功能
获取文件状态
头文件
#inlcude<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
函数原型
int stat(const char file_name,struct statbuf);
int fstat(int filedes,struct stat *buf);
int lsata(const char file_name,struct statbuf);
与stat()差别:为符号链接时,lstat()返回链接自身状态
返回值
成功时返回0
否则-1
测试文件类型的宏
头文件
<sys/stat.h>
函数
S_ISREG(): 普通文件
S_ISDIR():目录
S_ISCHAR():字符文件
S_ISBLK():块文件
S_ISLNK():符号链接
S_ISSOCK(): socket
实例
S_ISREG(statbuf.st_mode)
S_ISREG(buf.st_mode)
实例
if(buf.st_mode&S_IRUSR)
printf("readable by owner");
else
printf("unreadable by owner");
access()系统调用
功能
按实际用户ID和实际组ID测试文件存储权限
头文件
#include<uistd.h>
函数原型
int access(const char *pathname,int mode);
返回值
成功时返回0
否则-1
mode参数说明
F_OK值为0,判断文件是否存在
R_OK值为4,判断文件是否有读权限
W_OK值为2,判断文件是否有写权限
X_OK值为1,判断文件是否有读写权限
(R_OK|W_OK|X_OK:可以同时使用)
access(argv[i],R_ok);
umask()系统调用
功能
为进程设置文件存储权限屏蔽字
头文件
#include<sys/types.h>
#include<sys/stat.h>
函数原型
mode_t umask(mode_t mask);
chmod()/fchmod()系统调用
功能
更改文件权限
头文件
#include<sys/types.h>
#include<sys/stat.h>
函数原型
int chmod(const char *path,mode_t mode);
int fchmod(int fildes,mode_mode);
返回值
成功时返回0
失败返回-1
chown()/fchown()/lchown()系统调用
功能
变更文件宿主
头文件
#include<sys/types.h>
#include<unistd.h>
函数原型
int chown(const char *path,uid_t owner,gid_t grooup);
int fchown(int fd,uid_t owner,gid_t group);
int lchowm(const char *path,uid_t owner,gid_group);
//若path为符合链接,lchown()改变链接本身的所有者或组,chown()则改变连接所指向文件的所有者或组
返回值
成功时返回0
失败返回-1
link()/unlink()系统调用
功能
创建/删除一个硬链接
头文件
#include<unistd.h>
函数原型
int link(const char *oldpath,const char *newpath);
int unlink(const char *pathname);
//删除一个文件的目录项目并减少它的连接数
返回值
成功时返回0
失败返回-1
symlink()/readlink()系统调用
头文件
#include<unistd.h>
函数原型
int symlink(const char *oldpath,const cahr *newpath);
功能
用来创建符号连接文件
返回值
成功时返回0
否则-1
int readlink(const char *path,char *buf,size_t bufsize);
功能
readlink函数用来读取连接文件本身的内容(也就是符号链接指向的文件的文件名)
返回值
成功时放回放置在buffer中的字符数
否则-1