gpt4 book ai didi

c - 允许使用 execvp 执行程序

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:05 26 4
gpt4 key购买 nike

我正在创建一个 shell 副本,但在执行自制程序时遇到了问题。我的意思是,当我想执行诸如 javalswc 等之类的东西时,一切都很好......已经存在于路径变量。

现在我希望能够执行“myls”命令,它是原始 ls 的副本。问题是我的程序没有在 PATH 变量中注册,所以当我尝试 execvp("myls", …) 时,我收到错误消息“没有这样的文件或目录”。

我想知道如何解决这个问题并能够根据这个层次结构执行我的命令:

src
include
bin
makefile
executable <- this one is my main executable
myLs
executableLS <- would like to be able to call this one through execvp
myPs
executablePS <- would like to be able to call this one through execvp

最佳答案

要允许使用 execvp() 执行程序,您必须:

  • 将您的程序放在您的$PATH 中已有的目录中,
  • 或者把程序所在的目录放在你的$PATH上,
  • 或者安排使用程序的绝对路径名(/some/where/useful/myLs),
  • 或者安排使用程序的正确相对路径名(../useful/myLs 甚至 ./myLs)。

请注意,execvp() 仅在它看到的命令名称不包含 / 时搜索 $PATH(因此 ./myLs 停止查找 $PATH)。相对名称通常是最没有用的;如果您更改目录,则相对路径名可能会更改。

如有疑问,请确保您有一个目录 $HOME/bin,将您的程序放在那里(或将您的程序的符号链接(symbolic link)放在那里),然后添加 $HOME/bin 到你的路径。它位于我 PATH 的前面;我假设我知道自己在做什么。

关于c - 允许使用 execvp 执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47993871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com