Redirection stdout vers un Terminal
Résolu
xcel3000
-
vlmath Messages postés 833 Statut Contributeur -
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.
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
A voir également:
- Redirection stdout vers un Terminal
- Commande terminal mac - Guide
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
- Terminal de fret shein - Forum Consommation & Internet
- Il est en cours de transport vers votre site de livraison ✓ - Forum Consommation & Internet
- Windows 7 vers windows 10 - Accueil - Mise à jour
1 réponse
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
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