fgets的使用心得

最近在使用C+SHELL混合编程,需要频繁调用popen函数执行shell命令。

一般在命令端口下,输入shell命令后,屏幕会刷出命令的执行结果,我们可以查看相关的信息。

可以把屏幕上输出的信息,先放到文件中,然后我们就可以通过分析文件信息,获得我们需要的“过程控制”信息,即我们需要的参数。

一开始对各色的信息反馈,觉得文件分析无法下手。自己写了一部分分析代码,但感觉都不好用。在深究和多次搜索后,锁定fgets这个函数。

从百度百科我们可以知道,这个函数是从文件中读取“一行”信息,然后返回。这里的“一行”信息很重要,和“\r\n”相辅助,我们可以做到很多事情,特别是shell命令的返回结果,很多都可以用fgets返回其一行。

比如:

在android native中网络开发时,解析"netcfg"这个命令的返回结果。netcfg一般会列出所有的port口,down表示关闭,up表示打开。每一行只有一个down或者up.

我们可以每次获取一行,然后分析这一行,判断是否有up。这样可以使用这个端口去ping网络,从而判断网络是否有效。

char string[1024]={0};

FILE *p=popen("netcfg","r");

while(fgets(string,1024,p) != NULL)

{

  if(strstr(string,"UP"))

  {

    //do something

  }

}

posted @ 2013-01-28 22:36  城市*斗士(技术)  阅读(253)  评论(0编辑  收藏  举报