В программе Windows с двумя потоками: thread1
и thread2
.
Когда thread1
заблокирован в вызове fread(buffer, 1, 10, stdin)
в ожидании ввода, возможно ли сделать что-то из thread2
, чтобы заставить fread
вернуться?
Пока я пытался дозвониться до fclose(stdin)
с thread2
, но, похоже, это не работает Программа застревает при вызове fclose
до тех пор, пока какой-либо ввод не станет доступен в потоке stdin
.
То, чего я пытаюсь достичь, это завершить thread1
изящно, вместо того, чтобы просто убить его с помощью TerminateThread
, потому что есть некоторая работа, которую thread1
должен сделать в конце.
Еще одна вещь, которую следует учитывать, это то, что stdin
- это один конец именованного канала. У меня нет контроля над программой на другом конце канала.
Что мне нужно, так это просто отключить мою программу от конца канала (stdin
в данном случае).