Мое Windows приложение написано на C. Основной поток использует CreateThread для запуска функции в другом потоке.
Проблема заключается в том, что если основной поток вызвал приведенную ниже функцию перед вызовом CreateThread, вызовы функции из второго потока не смогут записать сообщения в файл , Если второй поток передает другое имя файла, он работает. Кажется, что-то блокирует фоновые потоки от открытия файла.
void WINAPI WriteToLogFile(LPSTR lpszLogfile, LPSTR lpszMsg)
{
HANDLE hFile;
DWORD dwWritten = 0;
char szMsgText[MAX_PATH];
time_t now = time(0);
memset(szMsgText, 0x00, sizeof(szMsgText));
strftime(szMsgText, 100, "%Y-%m-%d %H:%M:%S - ", localtime(&now));
hFile = CreateFile(lpszLogfile,
FILE_APPEND_DATA, FILE_SHARE_WRITE, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(hFile, szMsgText, (DWORD)strlen(szMsgText), &dwWritten, 0);
WriteFile(hFile, lpszMsg, (DWORD)strlen(lpszMsg), &dwWritten, 0);
WriteFile(hFile, "\r\n", 2, &dwWritten, 0);
CloseHandle(hFile);
}