如何搜索$ PATH

时间:2013-10-20 11:13:36

标签: c linux

我有一个编写c程序的任务,可以使用fork和exec在$ PATH中列出的所有目录中搜索目录。我的问题是如何从$ PATH中获取路径,然后我可以在我的代码中使用execl

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

int main(int argc, char* argv[]) {
  int pid = 0;
  for(int i = 0; i < argc; i++) {
    if (pid = fork() != 0){
      printf("Arg%d: %c\n", i, *argv[i]); // replace with exec ls -l <dir>/<arg>
      return 0;
    }
  }

  return 0;
}

1 个答案:

答案 0 :(得分:3)

您可以使用getenv()(man 3 getenv)获取PATH环境变量。将字符串复制到char*,然后使用&#39;将其与strtok()(man 3 strtok)分开:&#39;作为分隔符。您应该将原始字符串复制到新的char*,因为从getenv()获得的指针实际指向环境内部,strtok()将修改您传递给它的参数。然后,您可以为每个子字符串循环。