【发布时间】:2014-10-03 09:04:02
【问题描述】:
我有一个运行命令并向其传递一些参数的 c++ 程序。代码如下:
int RunApplication(fs::path applicationPathName,std::string arguments)
{
std::string applicationShortPath=GetShortFileName(applicationPathName);
std::string cmd="\""+applicationShortPath +"\" "+ arguments+" >>log.txt 2>&1 \"";
std::cout<<cmd<<std::endl;
int result=std::system(cmd.c_str());
return result;
}
当我运行系统命令时,cmd窗口很快出现然后关闭,但结果为1并且cmd没有运行(命令应该生成未生成的输出)。
为了检查 cmd 是否正确,我在系统行之前停止了应用程序并将 cmd 内容复制/粘贴到 cmd 窗口并且它工作正常。
我想知道如何找到应用程序没有在 system() 中运行的原因?
cmd 在运行前就有这个值:
"D:/DEVELO~3/x64/Debug/enfuse.exe" -w --hard-mask --exposure-weight=1 --saturation-weight=0.328 --contrast-weight=0.164 -o "C:/Users/m/AppData/Local/Temp/1.tif" "C:/Users/m/AppData/Local/Temp/1.jpg" "C:/Users/m/AppData/Local/Temp/2.jpg" >>log.txt 2>&1 "
我怎样才能找到它不工作的原因?
有什么方法可以设置系统不关闭 cmd 窗口以便我可以检查它吗?
有没有更好的方法在操作系统上运行命令?
Boost 有解决方案吗?
编辑
使用 cmd /k 运行后,我收到以下错误消息:
The input line is too long.
除了减少 cmd 行,我还能如何解决?
【问题讨论】:
-
那么 cmd 应该是什么?你能提供更多信息吗?