用于在c ++中使用system()执行命令的转义序列

时间:2014-04-16 06:42:21

标签: c++ linux system

我想使用system()执行命令。该命令需要文件名作为参数。像这样:

void f(string filename){
  strnig cmd = "path/to/my/command " + filename; 
  system(cmd.c_str());
  ... 
}

我的问题是我可以使用哪些转义序列,以便在文件名中接收的字符串将被视为文件的名称而已。例如,如果filename = "aname;rm *",我不希望我的命令在"aname"上执行,然后"rm *"被视为新命令并从当前目录中删除所有内容。

另外,我希望我的文件名能够包含特殊字符,例如:'"或空格,而不会影响命令的执行。

如何在c ++中执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:1)

man system:

  

system()通过调用/ bin / sh -c命令

执行命令中指定的命令

所以请使用你的shell所尊重的转义序列。