python / python/cpython

msvcrt.getch() returns EOF sentinel as data when no console is attached

Aberta
#149,324 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

OS-windows stdlib type-bug
Linguagem predominante
Python
Estrelas
77.2k
Forks
36k
Métricas de merge de PRs
Métricas de PR pendentes

Descrição

Bug report

Bug description:

"msvcrt.getch() returns EOF sentinel as data when no console is attached" --body "## Summary

On Windows, `msvcrt.getch()` returns the CRT EOF sentinel as normal Python data when no console is attached, instead of raising `OSError`.

Reproducer

```powershell
PCbuild\amd64\python_d.exe -c "import ctypes, msvcrt, sys; ctypes.windll.kernel32.FreeConsole(); sys.exit(0 if msvcrt.getch() == b'\xff' else 1)"
echo $LASTEXITCODE \``

Actual result:
`$LASTEXITCODE` is `0`

This means `msvcrt.getch()` returned `b'\xff'` after `FreeConsole()`.

Expected behavior

If `_getch()` fails because no console is attached, the Python wrapper should raise `OSError` instead of returning `b'\xff'`.

Environment

  • OS: Windows 11
  • Build: CPython debug build
  • Command used to build: `PCbuild\build.bat -c Debug`"
CPython versions tested on:

3.15

Operating systems tested on:

Windows

Linked PRs
  • gh-149450

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece pelo ponto de entrada msvcrt.getch() e reproduza o comportamento com o comando PCbuild/amd64/python_d.exe após FreeConsole(). Confirme que a ausência de um console não produz mais b'\xff' e, em vez disso, gera OSError; a issue lista o PR vinculado gh-149450, portanto verifique esse trabalho primeiro.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
operating-systems
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Claramente especificada
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.