允许使用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