IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probleme de renvoi au shell


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 48
    Par défaut Probleme de renvoi au shell
    Bonjour

    J'essai de renvoyer une liste de fichier au shell apres avoir selectioner ces fichiers grace a un programme qui s'appel my_select (projet pour mon ecole a rendre demain)

    Je gere la pluspart de ce qui m'est demander mais il me manque un truc important que je n'arrive pas a resoudre.

    my_select doit etre capable de renvoyer une liste (de fichier dans cette exemple) au shell .
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      $> set reponse = `my_select choix1 choix2 choix3 choix4`
     
            $> more `my_select *.c`
     
            $> rm `my_select ~/*`   NB: N'utilisez cette commande QUE si 
                                       vous etes sur que votre my_select
                                       fonctionne. Nous degageons  toute
                                       responsabilite  en  cas de bug de
                                       votre my_select...
     
            $> ls `my_select /u/ept1/*` > liste
    Mais je me heure toujours au meme probleme si je met comme descripteur STDIN j'ai access a l'interface du programme mais il ne renvoi pas les donne mais si je met STDOUT l'interface ne se lance pas et il est impossible de choisir ses fichiers.

    Si quelau'un pouvais m'aider a trouver ce que j;ai rater ca serais cool parceque je ne comprend pas (et ca m'enerve carement), voila la partie du code qui est charger de renvoyer les nom de fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    void	youhavselec(t_cstr act, t_chaine *current)
    {
      int	first;
     
      first = 0;
      tputs(act.clstr, 1, my_ichar);
      tputs(tgoto(act.cmstr, 0, 0), 1, my_ichar);
      tputs(act.vestr, 1, my_ichar);
      while (current != 0)
        {
          if (current->select)
    	{
    	  if (first)
    	    my_putchar(' ');
    	  my_putstr(current->data);
    	  first = 1;
    	}
          current = current->next;
        }
      exit(0);
    }
    Merci a tous ceux qui voudraient bien m'aider (je ne demande forcement une reponse precise, je peux me contenter d'un indice qui pourrait m;aider)

    Pendant que j'y suis voici les fonctions my_putchar et my_putstr
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void	my_putstr(char *str)
    {
      int	fd;
     
      fd = fcntl(STDIN_FILENO, F_DUPFD, 0);
      while (*str++ != '\0')
        write(fd, str - 1, 1);
    }
     
    void	my_putchar(char c)
    {
      int	fd;
     
      fd = fcntl(STDIN_FILENO, F_DUPFD, 0);
      write(fd, &c, 1);
    }

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par firemax Voir le message
    Bonjour

    J'essai de renvoyer une liste de fichier au shell apres avoir selectioner ces fichiers grace a un programme qui s'appel my_select (projet pour mon ecole a rendre demain)

    Je gere la pluspart de ce qui m'est demander mais il me manque un truc important que je n'arrive pas a resoudre.

    my_select doit etre capable de renvoyer une liste (de fichier dans cette exemple) au shell .
    Par exemple:
    [CODE] $> set reponse = `my_select choix1 choix2 choix3 choix4`
    Lorsque tu utilises la syntaxe (en shell) le shell remplace tout ce qui est entre backquotes par tout ce que le programme affiche. En général c'est utilisé pour récupérer cet affichage dans une variable comme ici
    Mais on peut l'utiliser de façon plus complexe comme là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if test `wc -l fic` -eq 50
    then
       ...
    fi
    Donc toi tu voudrais créer un programme qu'on puisse utiliser de cette façon => pas de problème => il te suffit de faire un programme qui affiche simplement ses infos à l'écran et n'importe qui pourra le mettre entre backquotes pour récupérer ce qu'il affiche.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Citation Envoyé par firemax Voir le message
    Bonjour

    J'essai de renvoyer une liste de fichier au shell apres avoir selectioner ces fichiers grace a un programme qui s'appel my_select (projet pour mon ecole a rendre demain)
    Je serais a l'ecole ce soir si tu m'offre un cafe je peux te filer un coup de main

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 48
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Lorsque tu utilises la syntaxe (en shell) le shell remplace tout ce qui est entre backquotes par tout ce que le programme affiche. En général c'est utilisé pour récupérer cet affichage dans une variable comme ici
    Mais on peut l'utiliser de façon plus complexe comme là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if test `wc -l fic` -eq 50
    then
       ...
    fi
    Donc toi tu voudrais créer un programme qu'on puisse utiliser de cette façon => pas de problème => il te suffit de faire un programme qui affiche simplement ses infos à l'écran et n'importe qui pourra le mettre entre backquotes pour récupérer ce qu'il affiche.
    Bah justement non ca ne fonctionne pas, j'ai du louper quelque chose

    Citation Envoyé par Jack_serious Voir le message
    Je serais a l'ecole ce soir si tu m'offre un cafe je peux te filer un coup de main
    Envoi moi ton login par MP (je suis a l'ecole pour la nuit surement)

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par firemax Voir le message
    Bah justement non ca ne fonctionne pas, j'ai du louper quelque chose
    Lance simplement ton programme Si ça t'affiche des trucs ben tu peux récupérer ces trucs dans une variable en faisant et éventuellement regarder le contenu de ta variable en tapant
    Citation Envoyé par firemax Voir le message
    Bah justement non ca ne fonctionne pas
    Si ton programme "my_select" n'affiche rien c'est là que t'as un soucis...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 48
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Lance simplement ton programme Si ça t'affiche des trucs ben tu peux récupérer ces trucs dans une variable en faisant et éventuellement regarder le contenu de ta variable en tapant
    Si ton programme "my_select" n'affiche rien c'est là que t'as un soucis...
    bah justement j'avais deja essayer et non je ne recupere rien (et je peux assurer que mes yeux de me trompe pas et que il y a bien une sortie sur le term)

    EDIT : Je mettrais plus de code une fois la soutenance passer parce que je veux vraiment comprendre pourquoi ca ne fonctionne pas

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par firemax Voir le message
    bah justement j'avais deja essayer et non je ne recupere rien (et je peux assurer que mes yeux de me trompe pas et que il y a bien une sortie sur le term)
    Hum... d'où vient cette sortie ??? Essaye de regarder si elle ne viendrait pas par hasard de stderr en tapant "my_select 2>fic" et vérifier si t'as toujours une sortie à l'écran ou bien si elle est partie dans "fic"

    Autre hypothèse à vérifier => remplace
    par
    En effet, si ton code affiche des caractères spéciaux, il se peut qu'un simple echo ne les affiche pas. Mais mettre ces caractères entre quottes leur permettra d'être protégés et affichés correctement. J'ai découvert ça en faisant un jour
    puis en tapant
    et
    le résultat est surprenant...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans un script shell/ftp
    Par peppena dans le forum Linux
    Réponses: 16
    Dernier message: 09/10/2006, 13h07
  2. Probleme de renvoi
    Par esca11 dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2006, 14h34
  3. Problème sur une commande shell
    Par nicolas66 dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 10/07/2006, 21h47
  4. Problème de configuration pour shell
    Par pierrot10 dans le forum Linux
    Réponses: 20
    Dernier message: 05/06/2006, 12h35
  5. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo