从linux获取返回字符串'可执行文件'在c ++程序中

时间:2018-02-26 04:18:49

标签: c++ linux qt executable

我正在开发一个c ++程序,我需要通过调用QT创建的可执行文件来获取图像路径的字符串值,其名称如(/home/pi/downloads/.jpg) -4.8.7浏览图像并选择它。

在QT中开发GUI时,我试图通过使用tostdString()函数将其转换为标准字符串来从Qstring返回字符串值。执行此QT程序时没有错误。为了检查目的,我创建了一个标签来查看Qstring变量的结果字符串。它是正确的。只有我使用tostdString()函数将其转换为标准字符串并返回该字符串值。

但是当用c ++调用QT程序的可执行文件来获取图像的路径和名称时,没有响应执行。    有没有办法从Linux可执行文件或此概念的任何其他建议中获取返回字符串值?提前谢谢!

修改

std::string exec(const char* cmd) 
{
    char buffer[128];
    std::string result = "";
    FILE* pipe = popen(cmd, "r");
    if (!pipe) throw std::runtime_error("popen() failed!");
    try 
    {
     while (!feof(pipe)) 
     {
        if (fgets(buffer, 128, pipe) != NULL)
            result += buffer;
     } 
    } 
    catch (...) 
    {
    pclose(pipe);
    throw;
    }
    pclose(pipe);
    return result;
}

这是我在Google上搜索并尝试使用时发现的功能。  我通过以下语句在程序中调用了这个函数。

string result= exec("./Browse"); 

'浏览'是我为QT创建的可执行文件命名的。

0 个答案:

没有答案