ディレクトリの存在をチェックするプログラムを書きたい。そのディレクトリが存在しない場合は、ディレクトリとその中にログファイルを作成しますが、ディレクトリが既に存在する場合は、そのフォルダに新しいログファイルを作成するだけです。
LinuxでCでこれを行うにはどうすればよいですか?
Mkdirを使用できます。
#include <sys/stat.h>
#include <sys/types.h>
int result = mkdir("/home/me/test.txt", 0777);
(...)ディレクトリとその中に(...)ファイルを作成するプログラムを書きたい
これは非常に一般的な質問なので、複数レベルのディレクトリを作成してfopenを呼び出すコードは次のとおりです。私はgnu拡張を使用して、printfでエラーメッセージを出力しています。
void rek_mkdir(char *path)
{
char *sep = strrchr(path, '/' );
if(sep != NULL) {
*sep = 0;
rek_mkdir(path);
*sep = '/';
}
if( mkdir(path,0777) && errno != EEXIST )
printf("error while trying to create '%s'\n%m\n",path );
}
FILE *fopen_mkdir( char *path, char *mode )
{
char *sep = strrchr(path, '/' );
if(sep ) {
char *path0 = strdup(path);
path0[ sep - path ] = 0;
rek_mkdir(path0);
free(path0);
}
return fopen(path,mode);
}