我有一个 std::string 包含一个要用 execv 执行的命令,将它转换为 execv() 的第二个参数所需的“char *argv[]”的最佳“C++”方法是什么?
澄清一下:
std::string cmd = "mycommand arg1 arg2";
char *cmd_argv[];
StrToArgv(cmd, cmd_argv); // how do I write this function?
execv(cmd_argv[0], cmd_argv);
最佳答案
这里的答案非常不统一。有什么问题:
std::string cmd = "echo hello world";
execl("/bin/sh", "/bin/sh", "-c", cmd.c_str(), NULL);
既然系统上已经有一个非常好的命令行解析器,为什么还要费心编写一个命令行解析器?
(注意:一个很好的理由是因为您不信任您将要执行的字符串。有人希望这已经是真的,但是 shell 将对该字符串执行“更多”操作,而不是简单的空白分隔符如果您不小心,将会打开更多的安全漏洞。)
关于c++ - 在 C++ 中将字符串转换为 argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1511797/