PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : getch() unter linux-console


ilPatrino
2006-03-02, 17:24:56
ich hab folgendes (wahrscheinlich simple) problem:

ein simples prog für die linux-console (bash, falls das eine rolle spielt) soll ein anderes (mpg321) mittels umgeleiteter ausgabe (einfach per pipe-operator) steuern.
das funktioniert, solange ich die tastatureingaben mittels cin bearbeite und per enter bestätige.
wenn ich eine getch()-konstruktion verwende, um tasten einzulesen statt strings, wird die pipe erst nach beendigung des steuerprogramms weitergeleitet. die ein/ausgabe funktioniert zwar auf dem bildschirm, aber nicht über die pipe.

mit pipes hab ich bisher nix zu tun gehabt - kann man das zum funktionieren bringen oder muß ich die pipes im programm anfordern? würde es damit funktionieren?


im detail:

das programm gibt einen string aus, der (weitergeleitet) mpg321 zum laden und abspielen eines songs veranlaßt. dann wartet es auf eine eingabe, um entweder ein pause (P) oder exit (Q) zu senden und sich zu beenden.

wenn ich die eingabe mit cin mache, klappt alles, aber ich muß jedes kommando mit enter bestätigen.

ersetze ich das warte-kommando durch getch() oder ein ähnliches konstrukt (aus dem netz), funktioniert das ganze nur noch bei der bildschirmausgabe. und zwar genau so, wie es soll.
bei weiterleitung über die pipe macht das prog gar nix, erst wenn ich das quit sende, übergibt er die pipe an mpg321. er lädt also den song und sendet sofort das quit hinterher.

was mach ich falsch?

€dit: hat sich erledigt: ein

fflush (stdout)

erzwingt die übergabe der pipe.

kann ignoriert & geschlossen werden...