1. 目录操作相关的系统调用
1.1 mkdir和rmdir系统调用
1.1.1 实例
1.2 chdir, getcwd系统调用
1.2.1 实例
1.3 opendir, closedir, readdir,
1.3.1 实例:递归便利目录
1. 目录操作相关的系统调用
1.1 mkdir和rmdir系统调用
[code]
filename: mk_rm_dir.c
#include <sys/stat.h>
int mkdir(const char *path, mode_t mode);
return:
S 0
F -1
note:
mode权限至少要有执行权限。
[/code]
[code]
#include <unistd.h>
int rmdir(const char *pathname);
return:
S 0
F -1
note:
pathname目录必须是空目录。
1.1.1 实例
#include <unistd.h> #include <sys/stat.h> #include <stdio.h> #include <assert.h> #define MODE (S_IRUSR | S_IWUSR | S_IXUSR | S_IXGRP | S_IXOTH) int main(int argc, char *argv[]) { char *pname; assert(argc == 2); pname = argv[1]; assert(mkdir(pname, MODE) == 0); printf("create %s successful! ", pname); assert(rmdir(pname) == 0); printf("rm %s ", pname); return 0; }
测试:
[qtlldr@qtldr editing]$ ./mk_rm_dir testdir
create testdir successful!
rm testdir
[qtlldr@qtldr editing]$
1.2 chdir, getcwd系统调用
#include <unistd.h>
int chdir(const char *pathname);
return:
S 0
F -1
#include <unistd.h>
char *getpwd(char *buf, size_t size);
return:
S buf
F NULL
buf是缓冲地址,size是buf的长度。该缓冲必须有足够的长度以容纳绝对路径名加上一个null终止符。
1.2.1 实例
[code]
filename:ch_get_dir.c
#include <unistd.h> #include <stdio.h> #include <string.h> #include <assert.h> #define BUFSIZE (50) int main(void) { char buf[BUFSIZE]; memset((void *)buf, '