一、获取系统中所有的网络接口的方法
方法1.读取/proc/net/dev
intf_loop(intf_t *intf, intf_handler callback, void *arg)//按行读取/proc/net/dev,来获取接口名
{
FILE *fp;
struct intf_entry *entry;
char *p, buf[BUFSIZ], ebuf[BUFSIZ];
int ret;
if ((fp = fopen(PROC_DEV_FILE, "r")) == NULL)//#define PROC_DEV_FILE "/proc/net/dev"
return (-1);
...
while (fgets(buf, sizeof(buf), fp) != NULL) { //按行读取/proc/net/dev
if ((p = strchr(buf, ':')) == NULL) //遇到:,则保存指针
continue;
*p = '\0'; //在原先‘:‘ 的位置,存入'\0',截断字符串
for (p = buf; *p == ' '; p++) //去掉多余的空格
;
}
if (_intf_get_noalias(intf, entry) < 0) {
ret = -1;
break;
}
....
return (ret);
}
写一段小程序,理解这里的字符串截取
char buf[] = "123:456";
char *p;
p = strchr(buf,':');
*p = '\0&#