我正在创建一个程序来调用我创建的先前程序。为了执行以前的程序,我使用了一个称为system的内置函数。它工作得很好,但是当我尝试在我的一个参数中使用空格执行系统命令时,我遇到了问题。它认为这是另一个论点。请问如何使用包含空格的参数执行系统命令?
执行命令Gemfile
参数1 ArgumentProgram.exe
参数2 User
参数3 File 1
Open
答案 0 :(得分:1)
虽然取决于操作系统,我的第一个猜测是:用这样的引号包围参数:
int status = system("ArgumentProgram.exe User1 \"File 1\" Open");
答案 1 :(得分:0)
在C中使用system
总是有点冒险,因为这可能会或可能不会涉及在其间调用aditional shell进程。分别传递程序和参数更安全。
替代解决方案取决于您的运行时环境;有关Windows和世界其他地区的实施,请参阅here。
您可能会争辩说,通过这种方式,您将失去标准合规性,如果您想在平台上制作便携式,则必须通过#ifdef
一个版本提供Windows,一个版本提供给其他操作系统。但是,即使使用system(....)
,您也只是“便携式”#34;在程序符合ANSI C的范围内;但由于系统执行的shell,以及命令字符串的解释,取决于您的环境,因此您也不是真正可移植的。