fopen()の検索パスを設定して、ファイル名を入力するだけで、これらのパスでこのファイルを検索する方法はありますか?
f=fopen("xxx","r");
xxxを現在のディレクトリに入れないようにしたいだけで、ソースコードを変更したくありません。
fopen()の検索パスを設定して、ファイル名を入力するだけで、これらのパスでこのファイルを検索する方法はありますか?
f=fopen("xxx","r");
xxxを現在のディレクトリに入れないようにしたいだけで、ソースコードを変更したくありません。
いいえ、自分でコーディングする必要があります。何らかの理由でコードを変更できない場合は、ファイルシステムを変更できます。たとえば、Linuxでは、シンボリックリンク、bind
マウント、FUSEなどを使用します。
ニーズに合わせて再定義することもできfopen
ます(ただし、これは行わないことをお勧めします)。Linuxでは、汚いLD_PRELOADトリックで「透過的」にすることさえできます。
いいえ、fopen
現在のディレクトリのみを検索します。ディレクトリのリストを指定することはできません。ただし、パスのリストを検索する場合は、次のようにします。
char *paths[] = {
".",
"/etc",
"/usr/local",
NULL
};
FILE *fp = NULL;
char path[ENOUGH];
while (!fp && paths[i]) {
sprintf(path, "%s/%s", paths[i], name);
fp = fopen(path, "r");
i++;
}