Redirection stdout vers un Terminal

Résolu/Fermé
xcel3000 - 31 déc. 2007 à 18:41
vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 - 31 déc. 2007 à 19:24
Bonjour a tous,

Voila, j'ai un problème dans un de mes programmes et je n'arrive pas à trouver une solution.

J'ai deux processus, le premier s'appelle Admin,c et le deuxieme Metro.c
Les deux programmes s'executent chacun dans un Terminal (Shell) different.

Je voudrais rediriger stdout de Metro.c sur le terminal du processus Admin.c

Peut être un début de solution était de faire;

Dans le processus Admin:
-------------------------------------


//-------------------------------------------------SAUVEGARDE DU NOM DU TERMINAL------------------------------------------
if(isatty(1))
{
sprintf(szBufferDonnee,"%s",ttyname(1));
if((hdFich= open("./NameTTY.txt",O_WRONLY|O_CREAT,(int)0600))==-1)
{
perror("(Admin) Impossible d'enregistrer le fichier PidAdmin.txt");
}
if(write(hdFich,&szBufferDonnee,sizeof(szBufferDonnee))==0){ exit(0);}
close(hdFich);
}

Dans le processus Metro:
-------------------------------------


//---------------------------REDIRECTION SORTIES--------------------------
if((idfich=open("NameTTY.txt",O_RDONLY))==(int)NULL)
{
perror("Erreur d'ouverture du fichier NameTTY.txt\n");
exit(1);
}
read(idfich,&szBufferDonnee,sizeof(szBufferDonnee));
close(idfich);
if((hfDevice=(FILE*)open(szBufferDonnee,O_RDONLY))==(int)NULL)
{
perror("Erreur d'ouverture du terminal\n");
exit(1);
}
if(!dup2(fileno(hfDevice),1))
{
perror("Erreur de dup2...");
exit(1);
}


Mais cela, ne marche pas... Pourquoi? Quelqu'un aurait il une solution?
D'avance merci a tout ceux qui prendront le temps de lire mon message.
A voir également:

1 réponse

vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
31 déc. 2007 à 19:24
Salut,

Si j'ai bien compris, tu voudrais que toutes les sorties de Metro.c seront les entrées de Admin.c ?

Pour ceci, sous linux en console, t'as le | (comme le ou en programmation) qui te permet de rediriger les sorties d'un programme.

$:~>Metro | Admin

En espérant avoir répondu à ta question.

@Bientôt
0