Linux获取shell执⾏结果,linux编程获取命令⾏(shell)执⾏结
果的函数
在实际编程过程中我们时常会遇到需要在C程序⾥嵌套解析shell命令(linux命令)返回数据的情况。此时我们就会⽤到如下的函数:
#define READMAX 128
char *_strdup(const char *s)
{
char *ptr = NULL;
ptr = strdup(s);
if(NULL != ptr)
{
//printf("sf_strdup success,*p:%p\n",ptr);
return ptr;
}
else
return NULL;
}
char *get_shell(char *cmd)
{
if(cmd == NULL)
return NULL;
FILE *fp = NULL;
char *ptr = NULL;
char *tag = NULL;
char buf[READMAX] = {0};
memset(buf,0,sizeof(buf));
if(NULL != (fp=popen((const char *)cmd,"r")))
{
if(NULL != fgets(buf,sizeof(buf)-1,fp))
{
tag = buf;
while( ('\n'!= *tag)&&('\0'!=*tag))
{
tag++;
shell脚本返回执行结果}
*tag = '\0';
ptr = _strdup(buf);
}else{
debug("cmd:%s, err\n",cmd);
}
pclose(fp);
return ptr;
}else{
return NULL;
}
}
例如,当我们要获取当前linux版本,可以像如下的使⽤⽅式:
char cmd_get_ver[] ="uname -a\n";
strcpy(kernel_version,sfget_shell(cmd_get_ver));
printf("%s\n",kernel_version);
如此我们就获取了命令(shell)执⾏的结果,如果要对于这部分返回的数据进⾏进⼀步解析就变的相当容易了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。