文件属性及系统调用(C语言)

文件属性及系统调用(C语言)_第1张图片

stat()/fstat()/lstat()

功能

获取文件状态

头文件

#inlcude

#include

#include

函数原型

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

测试文件类型的宏

头文件

函数

S_ISREG(): 普通文件

S_ISDIR():目录

S_ISCHAR():字符文件

S_ISBLK():块文件

S_ISLNK():符号链接

S_ISSOCK(): socket

实例
S_ISREG(statbuf.st_mode)
S_ISREG(buf.st_mode)

文件属性及系统调用(C语言)_第2张图片

实例

if(buf.st_mode&S_IRUSR)
      printf("readable by owner");
  else 
  printf("unreadable by owner");
  

access()系统调用

功能

按实际用户ID和实际组ID测试文件存储权限

头文件

#include

函数原型

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
#include

函数原型

mode_t umask(mode_t mask);

文件属性及系统调用(C语言)_第3张图片

chmod()/fchmod()系统调用

功能

更改文件权限

头文件

#include
#include

函数原型

int chmod(const char *path,mode_t mode);
int fchmod(int fildes,mode_mode);

返回值
成功时返回0
失败返回-1

文件属性及系统调用(C语言)_第4张图片

chown()/fchown()/lchown()系统调用

功能

变更文件宿主

头文件

#include
#include

函数原型

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

函数原型

int link(const char *oldpath,const char *newpath);
int unlink(const char *pathname);
//删除一个文件的目录项目并减少它的连接数

返回值

成功时返回0

失败返回-1

symlink()/readlink()系统调用

头文件

#include

函数原型

int symlink(const char *oldpath,const cahr *newpath);

功能

用来创建符号连接文件

返回值

成功时返回0

否则-1

int  readlink(const char *path,char *buf,size_t bufsize);

功能

readlink函数用来读取连接文件本身的内容(也就是符号链接指向的文件的文件名)

返回值

成功时放回放置在buffer中的字符数

否则-1

你可能感兴趣的:(Linux学习笔记)