C++ 如何使用exec()在C++;那么Linux呢?
对于作业,我将编写一个程序,作为命令行解释器,接受任何命令,使用C++ 如何使用exec()在C++;那么Linux呢?,c++,linux,C++,Linux,对于作业,我将编写一个程序,作为命令行解释器,接受任何命令,使用fork()创建一个新进程,并使用子进程使用exec()执行命令。问题是我不知道如何使用exec()系列命令,而事实证明在线搜索没有什么帮助。我在我的学校的Linux服务器上工作在C++。 从帖子中,我想我想要execlp(),但我真的不确定,所以如果我错了,请纠正我。当我尝试这个: string s = "/bin/" + command; execlp(s, command, NULL); 只是想看看它是否可以使用一个简单的命
fork()
创建一个新进程,并使用子进程使用exec()
执行命令。问题是我不知道如何使用exec()
系列命令,而事实证明在线搜索没有什么帮助。我在我的学校的Linux服务器上工作在C++。
从帖子中,我想我想要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)代码>
很明显,我不知道函数是如何使用的,所以我要问的是,有人提供建议或提供一个资源,关于“<代码>执行()/代码>我应该如何使用,我如何使用它?”< /P> < P>在C++ >代码>字符串< /C>和<代码> char */COD>(所谓的C字符串,因为这是字符串在C中是如何表示的)有两种不同的类型
作为快速修复(假设命令
也是字符串
),请执行以下操作:
string s = "/bin/" + command;
execlp(s.c_str(), command.c_str(), NULL);
从长远来看,你必须学习字符串和如何正确使用字符串。< /P>也许阅读一本合适的C++书籍,了解类型是一个好的开始。代码>应修复编译错误,手册页包含有关exec
系列的所有信息。手册页对此进行了解释。看到这个答案可能会有帮助Innot Kauker和wallyk,谢谢你的回答,他们很有帮助。texasbruce,我不小心删掉了我的部分,关于如何将它们更改为cstring会产生错误,请求为第二个参数使用不同的类型。但是,再次将它们更改为cstring不会突然产生编译错误。我只能认为我没有在某个时候将文件传输到服务器,这造成了混乱。