#include <windows.h>
#include <stdio.h>
FILE *fp;
DWORD WINAPI
test (void*)
{
fprintf(fp, "test to file in thread\n");
fprintf(stdout, "test to stdout in thread\n");
return 0;
}
int main ()
{
HANDLE lpHandle;
DWORD ThreadId;
fp = fopen("test.txt", "a");
fprintf(fp, "test to file\n");
fprintf(stdout, "test to stdout\n");
lpHandle = CreateThread(NULL,0,test,NULL,0,&ThreadId);
WaitForSingleObject(lpHandle, INFINITE);
fclose(fp);
return 0;
}
fprintf() и треды
Код:
Народ, обьясните почему не работает как предполагается? Тоесть fprintf в stdout выводит нормально, а если в программе есть вызов CreateThread, то в файл ничего не выводится ни в основном потоке до\после вызова CreateThread, ни в созданом потоке.. Как только закоментишь вызов, все работает как надо.. Никак не могу вьехать :(
Попробуй сделать fflush
GetLastError() после каждой WinAPI функции вызывать пробовал? Что он говорит?
Какую версию Runtime используешь, многопоточную или нет?
Кстати, MSDN рекомендует использовать не CreateThread(), а _beginthreadex().
2tarekon, спс, приму к сведению :)