在linux下,用c++中的system()执行命令的转义序列

escape sequences for executing a command with system() in c++, under linux

本文关键字:执行 命令 转义序列 system 中的 linux c++      更新时间:2023-10-16

我想使用system()执行一个命令。该命令需要一个文件名作为参数。类似这样的东西:

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

我的问题是,我可以使用什么转义序列,这样在filename中接收到的字符串将被认为只是文件名,而不是其他。例如,如果是filename = "aname;rm *",我不希望我的命令在"aname"上执行,然后"rm *"被视为一个新命令,并从我的当前目录中删除所有内容。

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

我如何在c++中做到这一点?

谢谢!

人工系统:

system()通过调用/bin/sh-c命令来执行命令中指定的命令

所以使用shell所推崇的转义序列。