lukrop
Don't feed trolls
Hi, folgende problemstellung:
ich habe ein (selbstgeschriebenes) lib, das mir den filedescriptor eines pseudoterminal (per forkpty()) zur verfuegung stellt. Im child wird die bash ausgefuehrt, soweit so gut, ich habe einen laufenden "terminal" und kann auf diesem ueber den filedescriptor lesen und schreiben. Nun habe ich eine (Qt) GUI anwendung in der ich per knopfdruck ein command am pseudo-terminal ausfuehre und in deren QTextEdit die ausgabe des terminals erscheinen soll. Klingt relativ einfach ABER: ich muss den pseudoterminal die ganze zeit auf ueberpruefen ob was neues zu lesen da ist, dies versuche ich ueber einen QThread zu realisieren. Der Thread funktioniert soweit auch nur habe ich probleme mit der funktion select(). Diese soll in einer while(true) schleife (im QThread) die ganze zeit ueberpruefen ob neues zum lesen da ist. Komischerweise sagt mir select() die ganze zeit, dass etwas neues da ist und die funktion die mir den pseudo-terminal output in die GUI schreibt liefert andauernd newlines und nur als erste zeile den prompt. Kennt jemand eine loesung fuer dieses Problem? Falls noetig kann ich auch die sourcen pasten.
lg
edit: gut, wer man-pags lesen kann ist klar im vorteil... -.-
select() prueft nur ob der fd bereit ist zum lesen, ist klar das er sich da die ganze zeit meldet.. mit welcher funktion kann ich pruefen ob was neues auf dem filedescriptor ist?
ich habe ein (selbstgeschriebenes) lib, das mir den filedescriptor eines pseudoterminal (per forkpty()) zur verfuegung stellt. Im child wird die bash ausgefuehrt, soweit so gut, ich habe einen laufenden "terminal" und kann auf diesem ueber den filedescriptor lesen und schreiben. Nun habe ich eine (Qt) GUI anwendung in der ich per knopfdruck ein command am pseudo-terminal ausfuehre und in deren QTextEdit die ausgabe des terminals erscheinen soll. Klingt relativ einfach ABER: ich muss den pseudoterminal die ganze zeit auf ueberpruefen ob was neues zu lesen da ist, dies versuche ich ueber einen QThread zu realisieren. Der Thread funktioniert soweit auch nur habe ich probleme mit der funktion select(). Diese soll in einer while(true) schleife (im QThread) die ganze zeit ueberpruefen ob neues zum lesen da ist. Komischerweise sagt mir select() die ganze zeit, dass etwas neues da ist und die funktion die mir den pseudo-terminal output in die GUI schreibt liefert andauernd newlines und nur als erste zeile den prompt. Kennt jemand eine loesung fuer dieses Problem? Falls noetig kann ich auch die sourcen pasten.
lg
edit: gut, wer man-pags lesen kann ist klar im vorteil... -.-
select() prueft nur ob der fd bereit ist zum lesen, ist klar das er sich da die ganze zeit meldet.. mit welcher funktion kann ich pruefen ob was neues auf dem filedescriptor ist?
Zuletzt bearbeitet: