在代码中获得linux shell命令执行结果的方法
1.使用``
符号
``
符号,及键盘左上角的反引号,类似markdown的内嵌代码,可以直接获得命令的执行结果作为字符串。
char buf[100];
sprintf(buf, "echo \" `date` : %d\" >> ~/test_data.txt" ,123);
system(buf);
2.使用管道
#define CMD_RESULT_BUF_SIZE 1024
int ExecuteCMD_C(const char* cmd, char* result_)
{
char buf_temp[CMD_RESULT_BUF_SIZE] = {0};
FILE *ptr = NULL;
int iRet = -1;
//popen: 开启子进程,建立管道,并运行指令,'r':从子进程获取结果,'w':向子进程写数据
if((ptr = popen(cmd, "r")) != NULL) //popen
{
if(fgets(buf_temp, sizeof(buf_temp), ptr) != NULL)
{
strcpy(result_, buf_temp);
}
pclose(ptr);
ptr = NULL;
iRet = 0; // 处理成功
}
else
{
Rotating_Error("popen %s error\n", cmd);
iRet = -1; // 处理失败
}
return iRet;
}