对于一个赋值,我将编写一个程序,它将作为命令行解释器,接受任何命令,使用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);
以及如何使用它为了这个目的?
答案 0 :(得分:0)
在C ++中string
和char*
(所谓的C-string,因为它是如何在C中表示字符串的)是2种不同的类型。
作为快速解决方法(假设command
也是string
),请执行以下操作:
string s = "/bin/" + command;
execlp(s.c_str(), command.c_str(), NULL);
但从长远来看,您必须了解字符串以及如何正确使用字符串。