system et redirection sortie standard sous linux
Bonjour,
Je suis en train de developper une interface utilisant ncurses. Une de mes fonctionnalites est de pouvoir editer un fichier texte. Pour cela, j'utilise la commande system pour lancer un terminal et lancer un editeur. Seulement voila, lorsque system renvoie une erreur (s'il ne trouve pas le terminal) alors il m'affiche une chaine a l'ecran. C'est ca que je ne veux pas puisqu'utilisant ncurses, ca m'affiche ca n'importe comment.
voici le bout de code concerné :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
void FormScripts::editerFichier(string nomFichier)
{
string terminal = getTerminal();
string editeur = getEditeur();
string commande;
if(terminal == "")
{
commande = editeur + " " + nomFichier;
}
else
{
commande = terminal + " -e=\"" + editeur + " " + nomFichier + "\"";
}
commande += " > Erreurs.log";
system(commande.c_str());
} |
PS: j'ai aussi essayé dup et freopen mais ca me fait toujours la meme chose.
Comment faire pour empecher system d'afficher des infos à l'ecran ? Et comment les recuperer ?
Merci
[EDIT]
Le fichier Erreurs.log est créé mais il ne contient rien.
[EDIT2]
En fait la sortie ne se fait pas sur stdout mais sur stderr. En redirigeant la sortie stderr avec freopen, ca marche. Maintenant je ne sait pas comment remettre la sortie stderr comme avant