Linux C 文件操作相关整理
2017-05-11 15:50
295 查看
1、检查文件是否存在
access:按照实际用户ID和实际组进行访问权限测试
#include <unistd.h>
int access(const char* pathname, int mode);
pathname:文件路径
mode:
F_OK:测试文件是否存在
R_OK:测试读权限
W_OK:测试写权限
X_OK:测试执行权限
返回:0表示不存在
2、检查目录是否存在
opendir:打开文件目录,成功返回指针,否则返回NULL
if (opendir(dir_path) == NULL)
printf("dir not exist!\n");
else
printf("dir exist!\n");3、stat系列函数
头文件:#include <sys/stat.h> #include <unistd.h>
函数定义: int stat(const char* file_name, struct stat* buf);
函数说明:通过文件名file_name获取文件信息,并保存在buf指向的结构体stat中
返回值:成功返回0,失败返回-1,错误代码保存在errno
错误代码:
ENOENT:参数file_name指定的文件不存在
ENOTDIR:目录存在但并非真正的目录(那是什么目录?)
ELOOP:file_name有过多符号连接问题,上限为16个
EFAULT:参数buf为无效指针,指向无法存在的内存空间
EACCESS:存取文件时被拒绝
ENOMEM:核心内存不足
ENAMETOOLONG:参数file_name的路径名称太长
struct stat {
mode_t st_mode; // file type & mode(permissions)
ino_t st_ino; // i-node number(serial number)
dev_t st_dev; // device number(filesystem)
dev_t st_rdev; // device number for specials files
nlink_t st_nlink; // number of links
uid_t st_uid; // user ID of owner
gid_t st_gid; // group ID of owner
off_t st_size; // size in bytes, for regular files
time_t st_atime; // time of last access
time_t st_mtime; // time of last modification
time_t st_ctime; // time of last file status change
long st_blksize; // best I/O block size
long st_blocks; // number of 512-byte blocks allocated
};st_mode:
S_IFMT 0170000 文件类型的位遮罩
S_IFSOCK 0140000 scoket
S_IFLNK 0120000 符号连接
S_IFREG 0100000 一般文件
S_IFBLK 0060000 区块装置
S_IFDIR 0040000 目录
S_IFCHR 0020000 字符装置
S_IFIFO 0010000 先进先出
S_ISUID 04000 文件的(set user-id on execution)位
S_ISGID 02000 文件的(set group-id on execution)位
S_ISVTX 01000 文件的sticky位
S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限
S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限
S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限
S_IRGRP 00040 用户组具可读取权限
S_IWGRP 00020 用户组具可写入权限
S_IXGRP 00010 用户组具可执行权限
S_IROTH 00004 其他用户具可读取权限
S_IWOTH 00002 其他用户具可写入权限
S_IXOTH 00001 其他用户具可执行权限
参考: http://blog.csdn.net/tigerjibo/article/details/11695763# http://www.cnblogs.com/Anker/p/3349672.html
access:按照实际用户ID和实际组进行访问权限测试
#include <unistd.h>
int access(const char* pathname, int mode);
pathname:文件路径
mode:
F_OK:测试文件是否存在
R_OK:测试读权限
W_OK:测试写权限
X_OK:测试执行权限
返回:0表示不存在
2、检查目录是否存在
opendir:打开文件目录,成功返回指针,否则返回NULL
if (opendir(dir_path) == NULL)
printf("dir not exist!\n");
else
printf("dir exist!\n");3、stat系列函数
头文件:#include <sys/stat.h> #include <unistd.h>
函数定义: int stat(const char* file_name, struct stat* buf);
函数说明:通过文件名file_name获取文件信息,并保存在buf指向的结构体stat中
返回值:成功返回0,失败返回-1,错误代码保存在errno
错误代码:
ENOENT:参数file_name指定的文件不存在
ENOTDIR:目录存在但并非真正的目录(那是什么目录?)
ELOOP:file_name有过多符号连接问题,上限为16个
EFAULT:参数buf为无效指针,指向无法存在的内存空间
EACCESS:存取文件时被拒绝
ENOMEM:核心内存不足
ENAMETOOLONG:参数file_name的路径名称太长
struct stat {
mode_t st_mode; // file type & mode(permissions)
ino_t st_ino; // i-node number(serial number)
dev_t st_dev; // device number(filesystem)
dev_t st_rdev; // device number for specials files
nlink_t st_nlink; // number of links
uid_t st_uid; // user ID of owner
gid_t st_gid; // group ID of owner
off_t st_size; // size in bytes, for regular files
time_t st_atime; // time of last access
time_t st_mtime; // time of last modification
time_t st_ctime; // time of last file status change
long st_blksize; // best I/O block size
long st_blocks; // number of 512-byte blocks allocated
};st_mode:
S_IFMT 0170000 文件类型的位遮罩
S_IFSOCK 0140000 scoket
S_IFLNK 0120000 符号连接
S_IFREG 0100000 一般文件
S_IFBLK 0060000 区块装置
S_IFDIR 0040000 目录
S_IFCHR 0020000 字符装置
S_IFIFO 0010000 先进先出
S_ISUID 04000 文件的(set user-id on execution)位
S_ISGID 02000 文件的(set group-id on execution)位
S_ISVTX 01000 文件的sticky位
S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限
S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限
S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限
S_IRGRP 00040 用户组具可读取权限
S_IWGRP 00020 用户组具可写入权限
S_IXGRP 00010 用户组具可执行权限
S_IROTH 00004 其他用户具可读取权限
S_IWOTH 00002 其他用户具可写入权限
S_IXOTH 00001 其他用户具可执行权限
参考: http://blog.csdn.net/tigerjibo/article/details/11695763# http://www.cnblogs.com/Anker/p/3349672.html
相关文章推荐
- 整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- Linux下对文件进行相关的操作
- Linux和Windows下文件和目录的相关属性及操作
- Linux脚本文件相关操作
- Linux----3-----文件相关操作
- linux文件相关操作
- linux基本操作(1)--文件、目录、用户、权限相关
- linux系统编程之文件与IO(八):文件描述符相关操作-dup,dup2,fcntl
- 解析linux 文件和目录操作的相关函数
- linux文件操作相关函数
- 【Linux从零开始】:2.文件与目录的管理和配置(2)相关操作命令
- 【Linux常用指令整理1】文件操作
- linux文件与目录操作相关API及递归遍历目录
- linux 中对文件的相关操作
- 整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- linux 文件操作相关函数
- Linux文件相关操作
- linux用户组、/etc/group文件及账户相关操作命令
- Linux文件相关操作
- linux 目录 文件管理 相关操作 权限