0

fork と exec を使用して、$PATH にリストされているすべてのディレクトリ内のディレクトリを検索できる ac プログラムを作成するタスクがあります。私の質問は、execl を使用してコードで使用できるように、$PATH からパスを取得する方法です。

#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 にコピーし、区切り文字として「:」を使用して (man 3 strtok)char*で分割します。strtok()元の文字列を new にコピーする必要がありますchar*。これは、取得したポインターがgetenv()実際には環境内を指し、strtok()渡した引数を変更するためです。その後、部分文字列ごとにループでフォークできます。

于 2013-10-20T12:51:05.430 に答える