允许使用execvp执行程序

我创建了一个shell副本,并且遇到了可执行自制程序的问题。我的意思是,当我想执行诸如javalswc等等的东西时,一切正常...... PATH变量中已经存在的所有东西。允许使用execvp执行程序

现在我想能够执行一个“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,
  • 或安排使用程序的绝对路径名(),
  • 或者安排使用程序的正确相对路径名(../useful/myLs或甚至./myLs)。

注意当它看到的命令名称不包含/execvp()只搜索上$PATH(所以./myLs停止寻找它的$PATH)。相对的名字通常是最不有用的;如果更改目录,则相对路径名可能会发生更改。

如有疑问,请确保您有一个目录$HOME/bin,将您的程序放在那里(或符号链接到您的程序),并将$HOME/bin添加到您的路径。它生活在我的PATH的前面;我想我知道我在做什么。

以上是 允许使用execvp执行程序 的全部内容, 来源链接: utcz.com/qa/265686.html

回到顶部