static char *Display(int argc, char **argv, int *retlen)
{
//cmd handle func, and save the result into the sReturnBuffer
char *retbuf = NULL;
char tmpbuff[1024];
char command[1024];
int len = 0;
int rc = 0;
FILE *fp = NULL;
int i = 0;
//check valid
if (NULL == argv || NULL == retlen || 0 == argc)
{
return NULL;
}
*retlen = 0;
for (i = 0; i <= argc; i++)
{
printf("argv[%d] = %s \r\n",i, argv[i]);
strcat(command,argv[i]);
strcat(command," ");
}
printf("cmd show = \r\n%s \r\n",command);
//popen
fp = popen(command, "r");
if (NULL == fp)
{
perror("popen error");
return NULL;
}
//sReturnBuffer init
memset(sReturnBuffer, 0, sizeof(sReturnBuffer));
// memcpy sReturnBuffer, get sReturnBuffer len
while(fgets(tmpbuff, sizeof(tmpbuff), fp) != NULL)
{
strcat(sReturnBuffer, tmpbuff);
}
len = (int)strlen(sReturnBuffer);
printf("len = %d \r\n",len);
if (len > 0)
{
//use retbuf as return value
retbuf = (char *)malloc(len);
memcpy(retbuf, sReturnBuffer, len);
}
printf("\r\nsReturnBuffer = \r\n%s \r\n", sReturnBuffer);
//pclose
rc = pclose(fp);
printf("rc = %d\n",rc);
if (-1 == rc)
{
perror("pclose error");
return NULL;
}
*retlen = len;
return retbuf;
}
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。