Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用exec()在C++;那么Linux呢?_C++_Linux - Fatal编程技术网

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不会突然产生编译错误。我只能认为我没有在某个时候将文件传输到服务器,这造成了混乱。