使用Windows系统()的问题

问题描述:

我有一个C++程序试图用两个参数调用可执行文件。该代码可以在Mac上正常工作,但是我在Windows上遇到了一些问题。我相信这个问题与参数中的空格有关,因为当我使用没有空格的路径时,它工作得很好。使用Windows系统()的问题

此外,我打印出我发送到system(),然后我在命令行上运行该打印输出,它工作得很好,这是微不足道的。

我作出这样一个电话:ret = system(cmd.c_str());

如果我做的:cout << cmd << endl;我会得到这样的事情:

"C:\Program Files (x86)\MyProgram\some_executable.exe" "C:\Users\me\Desktop\files" 

我不知道为什么报价没有帮助,我在system()调用中的路径中加入了引号。 cmd的打印输出正是我试图运行但它不起作用。但是,如果该路径中没有空格,它将执行得很好。

任何有关将空间参数传递给system()调用的建议?

+0

'system'返回什么?如果'-1'由'errno'设置了什么错误? – 2013-02-19 15:53:03

+0

它不返回-1,我刚刚在该代码块后面看到什么ret ...它返回1.但是,我可以告诉它是否正确运行,因为some_executable.exe将输出文件。 – roundtheworld 2013-02-19 15:58:56

+2

奇怪。 'system()'返回'1'意味着它成功地调用了你的程序,并且程序本身以退出代码'1'失败。 – 2013-02-19 16:01:27

经过更多的研究,这个问题与Windows是愚蠢的。系统调用删除了第一个和最后一个报价,所以我不得不将所有东西都包含在另一组引用中...我在这里找到了我的解决方案:C++ system() not working when there are spaces in two different parameters