第一章 列出一个目录中所有文件 程序清单1-1
1. apue.h 在书后的附录中找到输入。
2. gcc时报错, err_sys, err_quit, 补充函数, 加printf。 err_quit里还要加 exit(0).
3. gcc 得到 a.out。
4. 执行 ./a.out 报错, Segmentation fault (core dumped)。
5. 添加参数, 执行 ./a.out . , 打印当前目录下文件, 成功打印。
注: gcc -o 选项, 控制输出的文件名。 如本例中, gcc 1-1_ls.c -o ls则输出ls可执行文件。
int argc 命令参数个数。 至少为1, argv[0]是执行命令本身, 即为 ./ls, 若不加 ., 则 argv[1] 为 null
则函数在 opendir(argv[1])会因为非法指针, 导致段错误。
重点
DIR *dp;
struct dirent *dirp;
(dp = opendir(argv[1])) != NULL; //opendir()返回的是DIR的指针。
while ( (dirp = readdir(dp)) != NULL) //readdir()返回的是dirent指针。
{
printf("%s\n", dirp->d_name); //打印d_name.
}
closedir(dp); //closedir()与opendir()相对应。