UNIX环境高级编程学习笔记之文件和目录
1.获取文件的信息
#include <sys/stat.h>
int stat(const char* pathname, struct stat* restrict buf);
int fstat(int filedes, struct stat* buf);
int lstat(const char* pathname, struct stat* restrict buf); //三个函数的返回值:成功执行返回0,出错返回-1
2.按实际用户ID和实际组ID测试访问权限。
#include <unistd.h>
int access(const char* pathname,int mode); //成功执行返回0,出错返回-1
3.为进程设置文件模式创建屏蔽字。
#include <sys/stat.h>
mode_t umask(mode_t cmode); //返回以前文件模式创建的屏蔽字
4.更改现有文件的访问权限。
#include <sys/stat.h>
int chmod(const char* pathname, mode_t mode);
int fchmod(int filedes,mode_t mode); //两个函数返回值:成功执行返回0,出错返回-1
chmod()在指定文件上进行操作,fchmod()在打开的文件上进行操作。
5.更改文件的用户ID和组ID。
#include <unistd.h>
int chown(const char* pathname, uid_t owner, gid_t group);
int fchown(int filedes, uid_t ower, gid_t group);
int lchown(const char* pathname, uid_t ower, gid_t group); //三个函数的返回值:成功执行返回0,出错返回-1
对于符号链接,lchown()更改符号链接本身的用户ID和组ID,而不是符号链接所指向的文件。
6.文件截断。
#include <unistd.h>
int truncate(const char* pathname, off_t length);
int ftruncate(int filedes, off_t length); //两个函数的返回值:成功执行返回0,香港虚拟主机,出错返回-1
7.创建一个指向现有文件的链接。
#include <unistd.h>
int link(const char* existingpath, const char* newpath); //成功执行返回0,出错返回-1
8.删除一个现有的目录项。
#include <unistd.h>
int unlink(const char* pathname); //成功执行返回0,出错返回-1
9.解除对一个文件或目录的链接。
#include <stdio.h>
int remove(const char* pathname); //成功执行返回0,出错返回-1
10.更改文件或目录名称。
#include <stdio.h>
int rename(const char* oldname, const char* newname); //成功执行返回0,出错返回-1
11.创建一个符号链接。
#include <unistd.h>
int symlink(const char* actualpath, const char* sympath); //成功执行返回0,出错返回-1
12.打开符号链接本身。
#include <unistd.h>
ssize_t readlink(const char* restrict pathname, char* restrict buf, size_t bufsize); //成功执行返回读取的字节数,出错返回-1
13.更改文件的访问和修改时间。
#include <utime.h>
int utime(const char* pathname, const struct utimbuf* times); //成功执行返回0,出错返回-1
struct utimbuf{
time_t actime;
time_t modtime;
}
14.创建目录。
#include <sys/stat.h>
int mkdir(const char* pathname, mode_t mode); //成功执行返回0,出错返回-1
15.删除一个空目录
#include <unistd.h>
int rmdir(const char* pathname); //成功执行返回0,出错返回-1
16.读目录
#include <dirent.h>
DIR* opendir(const char* pathname); //成功执行返回指针,香港服务器,出错返回NULL
struct dirent* readdir(DIR* dp); //成功执行返回指针,若在目录结尾或者出错返回NULL
void rewinddir(DIR* dp);
int closedir(DIR* dp); //成功执行返回0,出错返回-1
long telldir(DIR* dp); //返回与dp关联的目录中的当前位置
void seekdir(DIR* dp);
struct dirent{
ino_t d_ino; //i-node number
char d_name[NAME_MAX+1]; //null-terminated filename
}
17.更改进程当前工作目录
#include <unistd.h>
int chdir(const char* pathname);
int fchdir(int filedes); //成功执行返回0,出错返回-1
18.获取进程当前工作目录
#include <unistd.h>
char* getcwd(char* buf, size_t size); //成功执行返回buf,网站空间,出错返回BULL
posted on
世上最累人的事,莫过於虚伪的过日子