C-允许使用ExecVP执行程序



我正在创建一个外壳副本,我有一个可执行的自制程序的问题。我的意思是,当我想执行诸如 javalswc等之类的部分时,一切都还好...路径变量中已经存在的所有内容。

现在,我希望能够执行" myls"命令,该命令是原始ls的副本。问题是我的程序未在路径变量中注册,因此当我尝试使用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,将程序放入其中(或在其中的程序中链接),然后将$HOME/bin添加到路径中。它生活在我的路前。我想我知道我在做什么。

相关内容

  • 没有找到相关文章

最新更新