1

我有一个这样的代码块:

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

它无法工作并返回结果:

'd:\a' 不是内部或外部命令、可运行程序或批处理文件。

但是当我在第二个参数处将引号 " 更改为 ' => 没关系

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

我想要_popen像 cmd.exe 这样的作品。所以,我该如何处理这种情况。

4

1 回答 1

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;
}
于 2013-11-05T06:11:54.140 回答