1 可以掌握的知识点
(1) 线上部署时的守护应用
(2) 常规的文件操作,配置文件读取
(3) 网络编程,端口复用等文件
(4) 多进程知识
2 代码注释如下
test_httpd.h
1 #include <pwd.h> 2 #include <grp.h> 3 #include <net/if.h> 4 #include <sys/ioctl.h> 5 #include <sys/syslog.h> 6 #include <stdarg.h> 7 #include <errno.h> 8 #include <stdio.h> 9 #include <fcntl.h> 10 #include <unistd.h> 11 #include <string.h> 12 #include <time.h> 13 #include <sys/types.h> 14 #include <sys/stat.h> 15 #include <dirent.h> 16 #include <errno.h> 17 #include <netinet/in.h> 18 #include <sys/socket.h> 19 #include <resolv.h> 20 #include <arpa/inet.h> 21 #include <stdlib.h> 22 #include <signal.h> 23 #include <getopt.h> 24 #include <net/if.h> 25 #include <sys/ioctl.h> 26 27 #define MAXBUF 1024 28 #define MAXPATH 128 29 30 char buffer[MAXBUF + 1]; 31 char ip[128];//存储字符串形式的Ip地址 32 char port[128];//存储字符串形式的端口 33 char back[128];//listen队列大小 34 char home_dir[128];//浏览主目录 35 36 37 void wrtinfomsg(char *msg) 38 { 39 syslog(LOG_INFO,"%s",msg); 40 } 41 42 43 //读取配置文件 44 int get_arg (char *cmd) 45 { 46 47 FILE* fp; 48 char buffer[1024]; 49 size_t bytes_read; 50 char* match; 51 fp = fopen ("/etc/test_httpd.conf", "r"); 52 bytes_read = fread (buffer, 1, sizeof (buffer), fp); 53 fclose (fp); 54 55 if (bytes_read == 0 || bytes_read == sizeof (buffer)) 56 return 0; 57 buffer[bytes_read] = '