Von C-Programm Konsole öffnen und Messages anzeigen
-
Hi,
ich programmiere eine Konsolenanwendung für Linux (Umbebung: KDevelop, sollte aber egal sein....) und gebe diverse Statusmeldungen auf der Konsole aus (z. B. mit printf(), puts()).
Ich möchte nun aus dem Programm heraus eine zweite Konsole öffnen um diverse Statusmeldungen anzuzeigen. Der Grund dafür ist, dass ich die Konsole 1 der Übersicht halber nicht überladen will
Geht das? Wenn ja, wie?
Gruss, Gü
-
du kannst einfach auf die Devices schreiben /dev/ttyXX
#include <unistd.h> #include <fcntl.h> #include <stdio.h> int main() { int fh=open("/dev/tty2",O_WRONLY); if(!fh) { perror("open"); return 1; } write(fh,"hallo welt!\n",12); close(fh); return 0; }
-
(btw. würde ich einen anderen Weg gehen. Du kannst Informationen ja nach stderr schreiben und wenn der User die auf einer anderen Konsole haben will, kann er das ja über pipes regeln
> foobar 2> /dev/tty2
)
-
thx für die Antworten. Leider war ich vorerst erfolglos: die Lösung mit dem öffnen einer Konsole klingt logisch, funzt jedoch nicht. Und gerade in diesem Moment ist mir eingefallen, dass dies wahrscheinlich am KDE liegt und ich einer Verwechslung erlegen bin... Geht es also auch, dass man am KDE ein eigenes Konsolen-ähnliches Fenster öffnet und dort irgendwelche Meldungen anzeigt?
Gruss, Günny
-
Direkt in /dev/tty* kannst du reinschreiben, aber das sind dann nur die Terminals, die du über ctrl-alt-f1 usw. erreichst. Um rauszufinden wie das pseudo-Terminal der X-Konsole heißt, kannst du 'tty' ausführen.
Ich würde es aber so machen:
mkfifo /tmp/mypipe && cat /tmp/mypipe
Alles was du in jetzt /tmp/mypipe reinschreibst, bekommst du von cat ausgegeben.
-
Ich würd's so machen:
stream = fopen("messages.txt", "w"); if (fork() == 0) system("xterm -e tail -f messages.txt"); else { fprintf(stream, "Hallo!\n"); }
(Ich hoffe, "-f" war die richtige Option bei tail. Falls nicht, musst du noch mal in der Man-Page nachschlagen.)
Martin
-
thx erst mal für die Antworten - da waren einige nützliche Tips dabei und ich werds dahingehend mal ausprobieren.
Gruss, Günny