【问题标题】:Do what `which` does in bash but in C [closed]在 bash 但在 C 中执行 `which` 执行的操作 [关闭]
【发布时间】:2021-03-03 04:46:50
【问题描述】:

什么是 linux 或 posix C 函数来查找可执行文件的方式与 Bash 在您键入可执行文件时查找可执行文件的方式相同?我认为which bash 命令做同样的事情至少非常相似。因此,如果我给函数参数"ls" 它返回“/bin/ls”,例如即时查看$PATH

【问题讨论】:

  • 你知道which是用C写的吗?你知道它有开源实现吗?你检查过它们吗?
  • 没有 posix C 函数可以在目录列表中查找可执行文件:您必须自己编写。也许您可以使用 POSIX popen() 调用 which
  • 那么你应该遍历PATH中的所有目录直到你找到它,应该很容易实现。
  • which 不是 bash 命令,顺便说一句,它是一个独立的可执行文件...

标签: c linux path posix


【解决方案1】:

我检查了以下命令的源代码。 这两个函数都自行解析和搜索环境变量 PATH。

  • which
    char*
    extract_colon_unit (char const* string, int* p_index)
    
  • execlp
    static int
    __execvpe_common (const char *file, char *const argv[], char *const envp[],
                      bool exec_script)
    

我猜没有 C 函数来搜索命令。

【讨论】:

  • 但是写一个应该不是问题
猜你喜欢
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多