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