fileno
FILE * 转成 fd
int fileno(FILE *stream);
①功能:获得一个文件流指针中的文件描述符
②参数:stream:文件流指针
③返回值:成功返回文件描述符;失败返回-1
fdopen
fd 转成 FILE *,不能改权限
FILE *fdopen(int fd, const char *mode);
内存模型大小一样的才能相互转换
①功能:将文件描述符转化为文件流指针
②参数:fd:已经打开的文件描述符;
mode:"r"、"r+"、"w"、"w+"、"a"、"a+"
③返回值:成功返回文件流指针;失败返回NULL
目录
步骤:①打开目标目录;②读取目录;③关闭目录
任何目录都有 “ . ” “ .. ”
opendir
DIR *opendir(const char *name);
①功能:打开一个目录获得一个目录流指针
②参数:name:目录名
③返回值:成功返回目录流指针;失败返回NULL
readdir
struct dirent *readdir(DIR *dirp);
①功能:从目录流中读取文件信息并将保存信息的结构体地址返回
②参数:dirp:目录流指针
③返回值:成功返回包含文件信息的结构体;出错或者读到目录流末尾返回NULL
closedir
int closedir(DIR *dirp);
①功能:关闭之前已经打开的目录流对象
②参数:opendir的返回结果中目录流对象
③返回值:成功返回0;失败返回 -1
chdir
int chdir(const char *path);
①功能:改变当前程序的工作路径
②参数:path:改变到的路径
③返回值:成功--返回0;失败--返回-1
getcwd
char *getcwd(char *buf, size_t size);
①功能:获得当前的工作路径
②参数:buf:保存工作路径空间的首地址;size:保存路径空间的长度
③返回值:成功--返回包含路径空间的字符串首地址;失败--返回NULL
(如果没有size,就可能会越界,出现段错误)
mkdir
int mkdir(const char *pathname, mode_t mode);
①功能:创建一个目录
②参数:pathname:路径;mode:mode & ~umask
③返回值:成功--返回0;失败--返回-1
rmdir
int rmdir(const char *pathname);
①功能:删除一个空目录文件
②参数:pathname:目录文件的名字
③返回值:成功返回0;失败返回-1
stat
int stat(const char *path, struct stat *buf);
①功能:获得文件的属性
②参数:path: 文件的路径;buf: 属性存放空间的首地址
③返回值:成功返回0;失败返回-1
注:①获得文件的详细信息;②传文件和目录均可;③文件名和内容是分开放的
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* Inode number */
mode_t st_mode; /* File type and mode */
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; /* Block size for filesystem I/O */
blkcnt_t st_blocks; /* Number of 512B blocks allocated */
/* Since Linux 2.6, the kernel supports nanosecond
precision for the following timestamp fields.
For the details before Linux 2.6, see NOTES. */
struct timespec st_atim; /* Time of last access */
struct timespec st_mtim; /* Time of last modification */
struct timespec st_ctim; /* Time of last status change */
#define st_atime st_atim.tv_sec /* Backward compatibility */
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
};
time
time_t time(time_t *t);
①功能:获得1970年到现在的秒数
②参数:t:存放秒数的空间首地址
③返回值:成功返回1970年到现在的秒数;失败返回-1
ctime
char *ctime(const time_t *timep);
①功能:将时间秒数转化成字符串
②参数:timep:保存时间空间的地址
③返回值:成功返回获得时间字符串的首地址;失败返回NULL
localtime
struct tm *localtime(const time_t *timep);
①功能:将一个秒数转化成日历时间
②参数:timep:保存秒数空间的地址
③返回值:成功返回保存日历时间结构体的指针;失败返回NULL
getpwuid
struct passwd *getpwuid(uid_t uid);
①功能:根据用户id到/etc/passwd文件下解析获得结构体信息
②参数:uid:用户id
③返回值:成功返回id对应用户的信息;失败返回NULL
getgrnam
struct passwd *getpwnam(const char *name);
①功能:根据用户名到/etc/passwd文件下解析获得结构体信息
②参数:name:要查找的用户名
③返回值:成功--返回一个指向passwd结构的指针;失败返回NULL
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 */
};
symlink
int symlink(const char *oldpath, const char *newpath);
①功能:创建一个链接向oldpath文件的新符号链接文件
②参数:oldpath:被链接向的文件的路径;newpath:新符号链接文件
③返回值:成功返回0;失败返回-1
remove
int remove(const char *pathname);
①功能:删除一个文件
②参数:pathname:删除文件的路径
③返回值:成功返回0;失败返回-1
rename
int rename(const char *oldpath, const char *newpath);
①功能:将一个旧路径名改为新的路径
②参数:oldpath:旧路径名;newpath:新路径名
③返回值:成功返回0;失败返回-1
link
int link(const char *oldpath, const char *newpath);
①功能:创建一个硬链接文件
②参数:oldpath:要链接向的文件;newpath:创建的新硬链接文件
③返回值:成功返回0;失败返回-1
perror:
void perror(const char *s);-->strerror() stderr
①功能:打印s字符串和errno对应的错误信息
②参数:s:要打印在终端上的出错信息
③返回值:缺省
strerror
char *strerror(int errnum);
①功能:打印errnum出错码对应的出错信息
②参数:errnum:出错errno号
③返回值:成功返回对应的错误信息
error
void error(int status, int errnum, const char *format, ...);
①功能:程序出错打印对应出错原因和用户输入字符串并退出
②参数:status:程序退出的状态;errnum:错误码;format:类似printf打印
③返回值:缺省