Execvp 只正确运行第一个命令
Execvp Only runs the first command correctly
我正在使用 fork
和 execvp
制作一个简单的 shell。当我 运行 我的程序并输入 ls
或 ls -l
之类的命令时,它会按照我喜欢的方式运行。完成后,我的程序就坐在那里等待另一个命令,但是当我输入另一个有效命令甚至输入相同命令时。 execvp
表示 ls: cannot access 'ls': no such file or directory
。我不知道为什么会这样。我再次在 运行ning 程序中得到相同的结果。
这是我的代码。我无法通过我的虚拟机复制它,所以我给它拍了一张照片。(如果有人想编辑这上面的格式那就太棒了。我试着查看帮助)
您的代码中的问题是您没有在命令启动之间将参数计数器重置为 0。
int tokenIndex=0;
do {
应该是
int tokenIndex;
do {
tokenIndex=0;
第一次有效,但第二次将 ls
作为 ls
的参数传递,因此消息
(尝试在 shell 中输入 ls ls
,您会得到完全相同的消息)。
我正在使用 fork
和 execvp
制作一个简单的 shell。当我 运行 我的程序并输入 ls
或 ls -l
之类的命令时,它会按照我喜欢的方式运行。完成后,我的程序就坐在那里等待另一个命令,但是当我输入另一个有效命令甚至输入相同命令时。 execvp
表示 ls: cannot access 'ls': no such file or directory
。我不知道为什么会这样。我再次在 运行ning 程序中得到相同的结果。
这是我的代码。我无法通过我的虚拟机复制它,所以我给它拍了一张照片。(如果有人想编辑这上面的格式那就太棒了。我试着查看帮助)
您的代码中的问题是您没有在命令启动之间将参数计数器重置为 0。
int tokenIndex=0;
do {
应该是
int tokenIndex;
do {
tokenIndex=0;
第一次有效,但第二次将 ls
作为 ls
的参数传递,因此消息
(尝试在 shell 中输入 ls ls
,您会得到完全相同的消息)。