我正在尝试在 C 中构建自己的 shell 作为类项目的一部分。我们需要使用 execv 并实现我们自己的路径。为了更好地理解这里是一个问题:
默认情况下,路径列表为空,但可以增长到任意大小。您应该实现一个内置命令来控制此变量:
path [+|- /some/dir]
path
(不带参数)显示列表中的所有条目,用冒号分隔,例如“/bin:/usr/bin”。
path + /some/dir
将给定的路径名附加到路径列表。
path - /some/dir
从路径列表中删除给定的路径名。
到目前为止,我误读了作业并使用了 execvp。请你能阐明如何创建我自己的路径变量,并为每个执行的命令搜索它所在的目录并将其添加到路径中吗?或者是否有任何使用 execv 编写的简单 shell 我可以看看?
我看到了http://linuxgazette.net/111/ramankutty.html,但我发现搜索有点太复杂了,他使用 execve。
到目前为止,我有最初为空的 char *mypath 变量。但用户可以使用 path + some/dir 或 path - /some/dir 添加或删除。execv 的语法是 execv("/some/dir", argv) 我如何在我的路径中搜索可执行文件并将其传递给 execv....例如 mypath=/bin/ls ;当我通过 execv(mypath, argv) 它不起作用...那么我如何将路径传递给 execv?