如何使用exec()在C ++和Linux中执行命令?

时间:2015-02-26 01:38:29

标签: c++ linux

对于一个赋值,我将编写一个程序,它将作为命令行解释器,接受任何命令,使用fork()创建一个新进程,并使用子进程执行命令{{1 }}。问题是我不知道如何使用exec()系列命令,并且在线搜索已被证明没有什么帮助。我在我学校的Linux服务器上使用C ++。

来自this帖子,我想我想exec(),但我真的不确定,所以如果我错了请纠正我。当我尝试这个时:

execlp()

只是为了查看它是否适用于简单的命令而且没有参数,例如string s = "/bin/" + command; execlp(s, command, NULL); ,我甚至无法编译它,收到此错误:

ls

尝试将参数作为字符串传递时。令人讨厌的是,我们的教科书与字符串文字完全相同,并且使用语句shell.cpp:52: error: cannot convert âstd::stringâ to âconst char*â for argument â1â to âint execlp(const char*, const char*, ...)â 成功运行。

显然,我不知道该功能是如何使用的,所以我要问的是有人可以提供建议或提供资源,说明我应该使用哪个execlp("/bin/ls", "ls", NULL);以及如何使用它为了这个目的?

1 个答案:

答案 0 :(得分:0)

在C ++中stringchar*(所谓的C-string,因为它是如何在C中表示字符串的)是2种不同的类型。

作为快速解决方法(假设command也是string),请执行以下操作:

string s = "/bin/" + command;
execlp(s.c_str(), command.c_str(), NULL);

但从长远来看,您必须了解字符串以及如何正确使用字符串。