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.
Configuration: Linux
Firefox 2.0.0.8