C++ Execvp仅正确运行第一个命令
我正在使用fork和execvp制作一个简单的shell。当我运行我的程序并键入像ls或ls-l这样的命令时,它就按照我喜欢的方式工作。当这项工作完成时,我的程序会坐在那里等待另一个命令,但当我输入另一个有效命令,甚至输入同一个命令时。execvp说ls:无法访问“ls”:没有这样的文件或目录。我不知道为什么会这样。我在再次运行程序时得到了相同的结果。 这是我的密码。我无法通过我的虚拟机复制它,所以我给它拍了张照片。如果有人想在上面编辑格式,那就太棒了。我试着看了看帮助C++ Execvp仅正确运行第一个命令,c++,c,linux,shell,execvp,C++,C,Linux,Shell,Execvp,我正在使用fork和execvp制作一个简单的shell。当我运行我的程序并键入像ls或ls-l这样的命令时,它就按照我喜欢的方式工作。当这项工作完成时,我的程序会坐在那里等待另一个命令,但当我输入另一个有效命令,甚至输入同一个命令时。execvp说ls:无法访问“ls”:没有这样的文件或目录。我不知道为什么会这样。我在再次运行程序时得到了相同的结果。 这是我的密码。我无法通过我的虚拟机复制它,所以我给它拍了张照片。如果有人想在上面编辑格式,那就太棒了。我试着看了看帮助 代码中的问题是在命令启动
代码中的问题是在命令启动之间没有将参数计数器重置为0
int tokenIndex=0;
do {
应该是
int tokenIndex;
do {
tokenIndex=0;
第一次它工作时,但第二次将ls作为ls的参数传递时,则会显示消息
尝试在shell中键入ls,您将得到完全相同的消息。我们需要查看一些代码以提供帮助。请提供@Riley抱歉,我在输入标签时按了enter键。我无法正确弹出图像,因此我必须放置一个imgur链接,因为我的代码无法通过vm复制。不要发布文本图像!不要链接到代码的图片。将代码放在这里,或者,如果太长,无法进行清晰的格式设置,请使用一些愚蠢的安全设置,以防止编写此代码的承包商窃取代码,有时还可以防止将代码从VM复制/粘贴到运行stackoverflow的实机。所以别对他太苛刻了,真烦人