0

我的任务是编写 ac 程序,该程序可以使用 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;
}
4

1 回答 1

3

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

于 2013-10-20T12:51:05.430 回答