/**
* 执行shell命令并且返回执行的结果
* @param shell_cmd shell命令
* @param result 返回命令执行的结果
* @return true 表示成功,false 表示失败
* @sample
*
*/
bool onShellCall(const char *shell_cmd, CString& result)
{
FILE* pipe = ::popen(shell_cmd, "r");
if (NULL == pipe)
{
return false;
}
char buffer[256] = {0};
result = "";
char * s_read = NULL;
// feof检测当前的文件指针是不是到文件尾,到达文件尾返回非0,没有到文件尾返回0
while(0 == feof(pipe))
{
// 文件指针停在当前读取到的字节上,下次fgets先往前移一步
s_read = fgets(buffer, sizeof(buffer), pipe);
if (NULL != s_read)
{
result += buffer;
}
else // 读取失败返回NULL 或 读取到文件尾 都不用再做feof检测直接跳出while
{
break;
}
}
pclose(pipe);
s_read = NULL;
return true;
}