ディレクトリを作成し、単純なファイルを書き込もうとする関数を作成しました。
buffer = "Hello world!";
string url = "a/b/c/d/";
string tmp = "";
string done = "";
while((tmp = GetBaseDir(url)).compare("")!=0){
done+=tmp;
mkdir(done.c_str(), 0777);
} // GetBaseDir returns "a/", and changes url to "b/c/d/"
ofstream file;
file.open((url+"file.txt").c_str(),ios::trunc);
file << buffer;
file.close();
ご覧のとおり、試行するだけで、失敗した場合は続行されます。
別のプロセスが同じファイルを書き込み権限で開いた場合、「開く」は失敗することを読みました。しかし、これは本当ですか?
このコードの複数のインスタンスを同時に実行すると、mkdir と書き込み操作はどうなりますか?