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

How to properly use system() to execute a command in C++?

本文关键字:c++ 执行 命令 何正确 system      更新时间:2023-10-16

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

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

Usage  : cuobjdump [options] <file>

下面是cuobjdump的选项列表。

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

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

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

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

最明显的是,是C/c++字符串中的转义字符,因此如果您想要从字面上使用它,则必须将其加倍。

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

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

我建议您使用CreateProcess,或ShellExecute/ShellExecuteEx,因为您正在Windows上工作。systemShellExecute最终只调用CreateProcess