#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int vs_popen(char *cmd, char *result, unsigned int len)
{
int rc = -1;
int off = 0;
FILE *fstream = NULL;
if ((NULL == cmd)&&(NULL == result)){
if (result != NULL)
snprintf(result, len, "param err!");
goto out;
}
memset(result, 0, (size_t)len);
if (NULL == (fstream = popen(cmd, "r"))){
snprintf(result, len, "popen err!");
goto out;
}
char buf[1024];
unsigned int left_len;
while (NULL != fgets(buf, sizeof(buf), fstream)) {
left_len = len - off;
if (left_len > 0)
off += snprintf(result + off, left_len, "%s", buf);
else
break;
}
pclose(fstream);
rc = off;
out:
return rc;
}
int main(int argc, char* argv[])
{
if (argc > 2)
{
printf("param is too more! argv[1]:%s\n", argv[1]);
}
int rc = 0;
char cmd_str[1024];
char result_str[1024];
memset(cmd_str, 0, 1024);
memset(result_str, 0, 1024);
strcpy(cmd_str, argv[1]);
vs_popen(cmd_str, result_str, 1024);
printf("result:%s\n", result_str);
return 0;
}