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
}
}