允许使用execvp执行程序
我创建了一个shell副本,并且遇到了可执行自制程序的问题。我的意思是,当我想执行诸如java,ls,wc等等的东西时,一切正常...... 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
