ファイルのロックと解除【Windows API】
ログファイルなどプログラムの実行中に他のプロセスから変更されると都合の悪いファイルがあります。 PerlとかPHPを使うとファイルロックの役割が理解できます。 ファイルのロックを行なうとロック処理を行なったプロセス以外からのファイルの操作は受け付けません。 ロックはファイルの1部分を指定して行なうことができるが、基本的にはファイル自体をロックすることが多いです。 細かいロックが必要なファイル操作を行なうくらいならば大人しくデータベースに頼った方が確実です。 ロックしたファイルは必ず解除してください。
HANDLE hFile;
hFile = CreateFile( "D:\\TEST.TXT", GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
LockFile(hFile, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF);
printf("[ファイルロック中]\n");
// ここでファイルの書き込み処理などを行なう
Sleep(30000);
UnlockFile(hFile, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF);
printf("[ファイルロック解除]\n");
CloseHandle(hFile);
}
