给定一个可执行文件,它的完整路径sholud将显示在linux中(使用C)。 可执行文件可以位于当前目录中,也可以位于其他目录中。
它应该类似于unix中的TYPE命令。例如使用type cp
,结果应为/bin/cp
。
任何人都可以提供代码吗? Atlest与之相关的系统调用。
答案 0 :(得分:2)
这很简单。我不想给你任何代码,但基本的想法。
这是一个项目findcom我很久以前为Windows操作系统编写了一个搜索命令的.net 2.0。您可以从源头获得一些想法。
答案 1 :(得分:1)
要获取键入命令时将运行的可执行文件的完整路径,请使用
$ which bash
/bin/bash
要搜索所有路径(包括MANPATH),请使用whereis
$ whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
如果在路径的不同部分中具有相同名称的可执行文件(如Solaris系统上的sysV shutdown(/ usr / sbin / shutdown)和berkeley shutdown(/ usr / ucb / shutdown)),那么whereis可能会有所帮助。 which
告诉您默认运行哪一个,whereis
为您提供所有可能性。
如果你没有得到回复,那就意味着它是内置的shell而不是可执行文件,
$ which while
$ whereis while
while:
但是,如果它作为shell内置和可执行文件存在,它将返回可执行文件的路径,但是将运行内置函数,除非指定了可执行文件的路径。
$ which test
/usr/bin/test
$ whereis test
test: /usr/bin/test /usr/share/man/man1/test.1.gz
答案 2 :(得分:0)
Linux使用$ PATH环境变量来查找可执行程序。您通常不会给出执行程序的完整路径(即您只执行ls,而不是/ usr / bin / ls)。在$ PATH下的目录下搜索可执行文件名称。 $ PATH环境变量类似于:
$ echo $PATH /usr/bin:/usr/sbin:/bin
系统将在:-separated目录下找到可执行文件。你需要做的是将这个字符串wrt“:”分开,然后将程序名称连接到结尾;发出统计呼叫。如果stat成功返回,则意味着程序在那里。如果没有去下一个候选人。像你一样,系统将执行第一个找到的路径。