Wykryj, czy stdin to terminal lub rura?

Kiedy wykonam ”python„z terminala bez argumentów wywołuje interaktywną powłokę Pythona.

Kiedy wykonam ”cat | python„z terminala nie uruchamia trybu interaktywnego. W jakiś sposób, nie pobierając żadnych danych wejściowych, wykrył, że jest podłączony do rury.

Jak zrobić podobne wykrywanie w C lub C ++ lub Qt?