_popen错误地使用引号符号

时间:2013-11-05 05:08:54

标签: c++ command execute popen

我有一个像这样的代码块:

FILE * file = _popen("\"d:\\a b\\sql.exe\" \"d:\\a b\\la.db\"", "r");
_pclose(file);

它无法工作并返回结果:

'd:\a' is not recognized as an internal or external command, operable program or batch file.

但是当我在第二个参数中改变引号“to”时,>没关系

\"d:\\a b\\la.db\"" =>  \'d:\\a b\\la.db\'"
FILE * file = _popen("\"d:\\a b\\sql.exe\" \'d:\\a b\\la.db\'", "r");
_pclose(file);

我希望_popen像cmd.exe一样工作。所以我该如何处理这种情况。

1 个答案:

答案 0 :(得分:1)

尝试在空格前加一个反斜杠。我刚刚写了这段代码片段(我有一个名为popen.exe的文件,只打印“test”),它似乎有效。

#include <cstdio>
#include <cstdlib>

int main()
{
    FILE * pFile;
    char buffer[100];

    pFile = _popen("\"C:\\test\ 1\\popen.exe\"", "r");
    if (pFile == NULL) perror("Error opening file");
    else
    {
        while (!feof(pFile))
        {
            if (fgets(buffer, 100, pFile) == NULL) break;
            fputs(buffer, stdout);
        }
        _pclose(pFile);
    }
    return 0;
}