【学习笔记】Linux平台的文件,目录及操作
时间:2011-05-01 来源:涵曦
下面介绍关于文件和目录操作的函数
1.文件类型
stat(),fstat()和lstat()函数
fstat功能和stat类似,只是不以文件的路径称作为标识,而是用文件描述符标识目标文件,获得该文件的有关信息。lstat形式和功能都与stat类似,但是当目标文件是符号链接文件时,lstat返回该符号连接的有关信息。
格式:
#inlcude <sys/stat.h>
#include <unistd.h>
int stat(const chat *name, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *file, stuct stat *buf);
与此命名文件有关的信息结构放在buf中。成功则函数返回0,否则返回-1。
2.文件权限
(1)access
用来检查指定文件的属性,可以检查文件爱你是否可读,可写,可执行。
格式:
#include <unistd.h>
int access(const char *file, int mode);
成功返回0,失败返回-1 。
(3)umask
为 进程设置创建文件的许可掩码。
格式:
#include <sys/types.h>
#include <sys/stat.h>
mode_t umask(mode_t mode);
返回以前文的文件方式创建屏蔽字。无错误返回。
(4)chmod和 fchmod
改变文件的操作权限
格式:
#include <sys/types.h>
#include <sys/stat.h>
chmod[OPTION]MODE[,MODE...] FILE;
int chmod(const char *path, mode_t mode);
int fchmode(int fileds, mode_t mode);
(5)chown,fchown和lchown
更改文件的用户ID和组ID。
格式:
#include <sys/types.h>
#include <unistd.h>
int chown(condt char *name, uid_t owner, gid_t group);
int fchown(int filedes, uid_t owner, gid_t group);
int lchown(const char *nam, uid_t owner, gid_t group);
3.文件操作
(1)link,unlink和 remove
link函数建立指向文件的新目录项。
unlink函数删除目录项或文件(仅作用于非目录文件)。
remove函数和unlink功能相同,只是remove可以删除目录文件
格式:
#include <unistd.h>
int link(const char *old, const char *new);
int unlink(const char *old);
#include <stdio.h>
int remove(const char *file);
成功返回0,失败返回-1 。
(2)rename
此函数可以实现对一个文件或目录的更名。
格式:
#include <stdio.h>
int rename(const char *old, const char *new);
(3)symlink
创建一个符号连接。
#include <unistd.h>
int symlink(const char *realpath, const char *charpath);
(4)realink
打开符号连接文件本身以读取连接中的文件名。
格式:
#include <unistd.h>
int reslink(const char *file, const char *buf, int bufsize);
4.文件时间
utime和utimes
格式:
#include <sys.types.h>
#inlcude <utime.h>
int utime(const char *filename, const struct utimebuf *time);
int utimes(char *filename, struct timeval *tvp);
5.目录操作
(1)mkdir
创建一个新目录。
格式:
#include <sys/types.h>
#include <sys/stat.h>
int mkdir(const char *dname, mode_t mode);
(2)rmdir
删除一个目录。
格式:
#include <unistd.h>
int rmdir(const char *dname);
(3)chdir和fchdir
这两个函数的任务是搜索相对路径名的起点并可以更改当前工作目录。它们的区别是chdir用路径名来标识目标目录,而fchdir用文件描述符来标识目标目录。
格式:
#include <unistd.h>
int chdir(const char *path);
int fchdir(int filedes);
(4)gecwd
获取当前工作目录的绝对路径名。
格式:
#include <unistd.h>
char *getcwd(char *buf, size_t bufsize);
6.特殊设备文件
sync和fsync
清空文件系统缓冲区
格式:
#include <unistd.h>
void sync(void);
int fsync(int filedes);