Redirection stdout vers un Terminal

Résolu
xcel3000 -  
vlmath Messages postés 833 Statut Contributeur -
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.

1 réponse

vlmath Messages postés 833 Statut Contributeur 160
 
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