1.readlink(pathnam,buf,size)
参数:pathname是一个链接文件名,
功能:该函数的功能是将pathname文件中的路径读到buf中,一共可读size个大小
2.getcwd(buf,zise)
功能:获取当前路径到buf中;
3.chdir(path)
功能:改变当前的工作路径为path;
4.目录操作的打开、读、关闭操作
4.1opendir(path)
DIR *dp;//目录流指针
dp=opendir(path)//打开目录函数返回的是一个目录流指针,指向目录的第一 个元素(类似于文件描述符);
4.2 readdir(dp)
struct dirent *ent;//存放读取目录项信息的结构体指针
ent=readdir(dp);//通过dp读到的信息存放在ent指针指向的变量中,可以通过 while(1)循环依次读取。
/////////////////////////////////////////
这个结构与实现有,但互少会包含前两个成员
struct dirent {
ino_t d_ino; /* inode number */
char d_name[256]; /* filename */
off_t d_off; /* offset to the next dirent */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file */
};
4.3 closedir(dp)//关闭目录文件
5.getpwnam(const char *name)
// struct passwd {
char *pw_name; /* username */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user ID */
gid_t pw_gid; /* group ID */
char *pw_gecos; /* user information */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
};
struct passwd *pw;
pw=getpwnam(*name)//通过用户名在passwd中找到用户的信息,返回一个结构体指针。通过pw可以访问结构体内的任何信息。
6.getpwent(void)
返回值:为一个struct passwd 类型的结构体指针;
功能:遍历出passwd database中所有信息,而上个getpwnam()只找出与参数相同的变量的结构体指针。
与它配合使用的还有:
void setpwent(void);//指针回到文件头
void endpwent(void);//function is used to close the password database after
all processing has been performed.
7.文件截短:
int truncate(*path,off_t length);
int ftruncate(int fd,off_t length);
这两个函数将原函数截短为length长度,截短后的文件内容将不能再被读取,文件的大小改变,但是文件的指针并没有发生偏移,依然在原来的文件尾。 如果length的长度比原来长,则在原文件尾端和新文件尾端被读为0,(文件空洞)
8.权限
mode_t mode;
sscanf(argv[1],"%o",&mode);//数字字符串转换为8进制
chomd(argv[2],mode)//改变文件argv[2]的权限。
9.删除函数
unlink(*pathname)//如果该文件没有进程使用,且链接数为0,则删除该文件
rmdir()//用于删除目录
remove()//遇见文件则电泳unlink(),遇见目录则调用rmdir();
10.stat(pathname,struct stat *restrict buf)//返回与此命名文件有关的信息结构
fstat(int filedes,struct stat *buf)//返回已经打开文件的信息结构
lstat(const char *restrict pathname,struct stat *restrict buf)//不跟随函数,如果是一个链接文件名,返回该链接文件的信息;
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};