#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdarg.h> #include <signal.h> #include <stdint.h> #include <linux/limits.h> #include <time.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define BUFSZ PIPE_BUF void myPipe(char *command, char **output) { FILE *fp; char buf[BUFSZ]; int len; *output=malloc(1); strcpy(*output, ""); if((fp=popen(command, "r"))==NULL) return; while((fgets(buf, BUFSZ, fp)) != NULL){ len=strlen(*output)+strlen(buf); if((*output=realloc(*output, (sizeof(char) * (len+1))))==NULL) return; strcat(*output, buf); } pclose(fp); } int main(void) { char *buf; char *p; char *p1,*p2,*p3,*p4; myPipe("route", &buf); printf("%s\n",buf); p=buf; while(strlen(p)!=0) { p1=strchr(p,'\n');//查找第一个换行符位置,即第一行结尾 printf("\n"); printf("The next line:\n"); printf("%.*s\n", p1-p, p); p=p1+1;//指针转到下一行开头 } free(buf); return 0; }
逐行打印输出网络返回的信息
最新推荐文章于 2024-11-06 09:59:52 发布