


![KW6RLP2WDJ$KWCH0I$]}1%A KW6RLP2WDJ$KWCH0I$]}1%A](//images0.cnblogs.com/blog/405501/201503/071600577116842.png)
![]I]BUD79L~ZQKIDMROXIQMX ]I]BUD79L~ZQKIDMROXIQMX](//images0.cnblogs.com/blog/405501/201503/071600598203985.png)
![GRN74NG(792Z{7`0O]6_4ID GRN74NG(792Z{7`0O]6_4ID](//images0.cnblogs.com/blog/405501/201503/071601023364888.png)

// 1.3ListAllTheFilesInADirectory.cpp
#include <dirent.h>
#include "../apuesunyj.h"
int main(int argc, char *argv[])
{
DIR* dp;
struct dirent* dirp;
if (2 != argc)
{
err_quit("usage: ls directory_name");
}
if ((dp = opendir(argv[1])) == NULL)
{
err_sys("can’t open %s", argv[1]);
}
while ((dirp = readdir(dp)) != NULL)
{
printf("%s\n", dirp->d_name);
}
closedir(dp);
return 0;
}


1 // error.cpp
2 #include "apuesunyj.h"
3
4 int64_t const MAXLINE = 4096; // max line length
5 /*
6 * * Print a message and return to caller.
7 * * Caller specifies "errnoflag".
8 * */
9 static void err_doit(int errnoflag, int error, const char *fmt, va_list ap)
10 {
11 char buf[MAXLINE];
12
13 vsnprintf(buf, MAXLINE, fmt, ap);
14 if (errnoflag)
15 snprintf(buf + strlen(buf), MAXLINE - strlen(buf), ": %s", strerror(
16 error));
17 strcat(buf, "\n");
18 fflush(stdout);/* in case stdout and stderr are the same */
19 fputs(buf, stderr);
20 fflush(NULL);/* flushes all stdio output streams */
21 }
22
23 /*
24 * * Fatal error unrelated to a system call.
25 * * Print a message and terminate.
26 * */
27 void err_quit(const char *fmt, ...)
28 {
29 va_list ap;
30
31 va_start(ap, fmt);
32 err_doit(0, 0, fmt, ap);
33 va_end(ap);
34 exit(1) ; // process terminate, not just like return, totally different
35 }
36
37 /*
38 * * Fatal error related to a system call.
39 * * Print a message and terminate.
40 * */
41 void err_sys(const char *fmt, ...)
42 {
43 va_list ap;
44
45 va_start(ap, fmt);
46 err_doit(1, errno, fmt, ap);
47 va_end(ap);
48 exit(1) ;
49 }
1 // apuesunyj.h
2 #ifndef APUE_SUNYJ
3 #define APUE_SUNYJ
4
5 #include <errno.h>
6 #include <stdio.h>
7 #include <string.h>
8 #include <stdarg.h>
9 #include <stdlib.h>
10 #include <stdint.h>
11 #include <unistd.h>
12
13 void err_quit(const char *fmt, ...);
14 void err_sys(const char *fmt, ...);
15
16
17 #endif
















