こんにちはexecvp()
、変数と組み合わせて使用して**environ
、ユーザーが入力したコマンドの正しいパスを見つけようとしています。
問題は、これを行う方法がよくわからないことです。コマンドファイルを開いて存在するかどうかを確認することはできますが、検索する必要があるパスを取得する方法がわかりません**environ
.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char *start, *end;
char ch;
char* path = getenv("PATH");
if (!path) {
fprintf(stderr, "could not get $PATH, exiting\n");
exit(EXIT_FAILURE);
}
start = path;
do {
end = strchr(start, ':');
if (!end) {
printf("%s\n", start);
} else {
ch = *end;
*end = '\0';
printf("%s\n", start);
*end = ch;
}
start = end + 1;
} while (end != NULL);
return 0;
}
この小さなプログラムは、env[PATH] から別のパスを取得する方法を示しています。