Rechercher : dans
Par :

Redirection stdout vers un Terminal

Dernière réponse le 31 déc 2007 à 19:24:47 xcel3000, le 31 déc 2007 à 18:41:42 
 Signaler ce message aux modérateurs

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:
-------------------------------------


//-------------------------------------------------SAUVEGARD­E 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

Meilleures réponses pour « Redirection stdout vers un Terminal » dans :
Ouvrir un terminal ici VoirQuand vous utilisez Nautilus (gestionnaire de fichiers du GNOME utilisé par Ubuntu), il serait parfois bien pratique de pouvoir ouvrir un terminal directement dans un répertoire précis. C'est tout à fait possible. Faites: sudo aptitude install...
Personnaliser la commande "Envoyer vers" VoirComment enrichir ou nettoyer le menu "Envoyer vers" ? Comment accéder au dossier "SendTo" ? Comment ajouter un raccourci dans SendTo ? Rétablir les raccourcis "Bureau", "Dossier compressé", "Mes documents", "Destinataire" Un clic droit...
Télécharger Spyware Terminator VoirSpyware Terminator comprend: Scanning rapide des logiciels Anti Espions Protection en temps réel c Protection HIPS Protection Antivirus (ClamAv) Support en Plusieurs Langues Il empêche les spywares d'attaquer votre système, mais aussi...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...
Vers informatiques VoirLes vers Un ver informatique (en anglais worm) est un programme qui peut s'auto-reproduire et se déplacer à travers un réseau en utilisant les mécanismes réseau, sans avoir réellement besoin d'un support physique ou logique (disque dur, programme...
Faire un lien vers CommentCaMarche VoirVous êtes le bienvenu pour faire un lien vers CommentCaMarche.net ! Vous avez l'autorisation de faire pointer un lien vers la page d'accueil de CommentCaMarche.net ou bien directement vers un des articles. Si vous voulez agrémenter le lien d'une...

1

 vlmath, le 31 déc 2007 à 19:24:47

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

Répondre à vlmath