Archiv verlassen und diese Seite im Standarddesign anzeigen : GNU Readline Prompt auf STDERR?
Gibt es eine Möglichkeit, die Eingabeaufforderung 'readline("prompt: ")' der GNU Readline Bibliothek auf STDERR auszugeben anstatt auf STDOUT? Konnte dazu leider nichts in der Doku finden. Oder kann man (temporär) STDOUT auf STDERR umbiegen? Danke!
BLUESCREEN3D
26-03-2008, 16:44
Da in der manpage nichts dazu steht, kann readline() das wohl nicht.
Eine Umleitung funktioniert so:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <readline/readline.h>
int main()
{
/* stdout nach stderr umleiten: */
int backup_stdout = dup(STDOUT_FILENO); /* das alte stdout brauchen wir später noch */
dup2(STDERR_FILENO, STDOUT_FILENO); /* stderr verdoppeln und dabei stdout überschreiben */
char *input = readline("prompt: ");
/* Umleitung von stdout auf stderr aufheben: */
dup2(backup_stdout, STDOUT_FILENO);
close(backup_stdout);
puts(input);
return EXIT_SUCCESS;
}
Kompilieren mit -lreadline -ltermcap.
Perfekt, funktioniert einwandfrei. Vielen lieben Dank. :)
Nur noch aus Interesse: warum sollte ich gegen die Termcap-Bibliothek linken? Davon nutze ich ja nichts (und es funktioniert natürlich auch ohne).
BLUESCREEN3D
27-03-2008, 13:39
warum sollte ich gegen die Termcap-Bibliothek linken? Davon nutze ich ja nichts (und es funktioniert natürlich auch ohne).
Auf meinem System ging es nicht ohne, deshalb hatte ich das dazugeschrieben.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.