如何正确使用system()在C ++中执行命令?

时间:2011-07-12 23:02:24

标签: c++ function system

我是Windows下的C ++编程新手。我正在尝试使用cuobjdump函数在C ++代码中执行命令system()

system("C:\\program files\\nvidia gpu computing...\\cuobjdump.exe --dump-cubin C:\\..\\input.exe");

输出:

Usage  : cuobjdump [options] <file>

接下来是cuobjdump的选项列表。

当我执行这个程序时,我总是得到命令行中显示的cuobjdump帮助选项。就像系统调用不解析文件名一样。我究竟做错了什么?使用createprocess时,我得到相同的结果。选项--dump-cubin给出了错误,就像我输入错误一样。

5 个答案:

答案 0 :(得分:11)

尝试使用(即使用"围绕cuobjdump.exe路径,在C ++中正确转义为\"):

system("\"C:\\program files\\nvidia gpu computing...\\cuobjdump.exe\" --dump-cubin C:\\..\\input.exe");

答案 1 :(得分:5)

system("cuobjdump --dump-cubin path\filename.exe");

编译器将\f解释为字符串转义序列,试试path\\filename.exe

答案 2 :(得分:4)

最明显的是,\是C / C ++字符串中的转义字符,因此如果要按字面意思使用它,则必须加倍。

system("cuobjdump --dump-cubin path\\filename.exe");

答案 3 :(得分:3)

假设path是正确的,您必须在字符串中使用双\\来表示单个\

答案 4 :(得分:3)

由于您使用的是Windows,我建议您使用CreateProcessShellExecute / ShellExecuteExsystemShellExecute最终只会调用CreateProcess