PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > getop_long avec plusieurs arguments
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

getop_long avec plusieurs arguments

Réponse
 
LinkBack Outils de la discussion
Vieux 17/01/2007, 11h45   #1
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut getop_long avec plusieurs arguments

coucou tout le monde,
j'utilise getop_long pour parser les arguments passés à mon programme
(j'ai pris pour exemple le code de chown qui utilise aussi cette
fonction), mais je ne vois pas comment garer plusieurs fichiers de
cette manière :
../monProg --file fichier1 fichier2 fichier3
ou bien encore
../monProg --file *.ext
à chaque fois, le programme retourne :
"This arguments are not options : fichier2 fichier3"
Ce qui est normal, mais comment faire pour lui faire prendre en compte
que après un --file, il puisse y avoir plusieurs arguments ?
J'ai vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce
groupe, avec parfois des réponses du genre "getop ne permet pas cela"
alors comment fait on pour le faire ? parce que il y a un tas de
programme qui les utilisent (pratiquement toutes les commandes de bases
unix : ls, chown,...), je n'ai pas réussi à trouver de réponse
claire pour gérer tout mes paramètre...

(je précise que je suis un peut débutant et que je ne comprend pas
encore le lisp, par contre le français, le c, l'algo et le java, y a
pas de soucis )

merci

  Réponse avec citation
Vieux 17/01/2007, 14h13   #2
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: getop_long avec plusieurs arguments

"n@pster" wrote in message
<1169034324.503757.262560@m58g2000cwm.googlegroups .com>:
> J'ai vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce
> groupe, avec parfois des réponses du genre "getop ne permet pas cela"


Il me semble bien.

> alors comment fait on pour le faire ? parce que il y a un tas de
> programme qui les utilisent (pratiquement toutes les commandes de bases
> unix : ls, chown,...), je n'ai pas réussi à trouver de réponse
> claire pour gérer tout mes paramètre...


ls, chown et consorts ne prennent pas d'options à plusieurs arguments: il
prennent des arguments qui ne sont pas des options. Tout ce qui reste après
le passage de getopt, ce sont des arguments qui ne sont pas des options.
  Réponse avec citation
Vieux 17/01/2007, 14h13   #3
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: getop_long avec plusieurs arguments

"n@pster" wrote in message
<1169034324.503757.262560@m58g2000cwm.googlegroups .com>:
> J'ai vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce
> groupe, avec parfois des réponses du genre "getop ne permet pas cela"


Il me semble bien.

> alors comment fait on pour le faire ? parce que il y a un tas de
> programme qui les utilisent (pratiquement toutes les commandes de bases
> unix : ls, chown,...), je n'ai pas réussi à trouver de réponse
> claire pour gérer tout mes paramètre...


ls, chown et consorts ne prennent pas d'options à plusieurs arguments: il
prennent des arguments qui ne sont pas des options. Tout ce qui reste après
le passage de getopt, ce sont des arguments qui ne sont pas des options.

D'ailleurs, si tu y réfléchis bien, quand tu lis:

frobnicate --exclude foo bar baz qux

comment sais-tu si bar est un argument à frobnicate, ou bien un argument à
l'option --exclude? Ça n'est pas possible.
  Réponse avec citation
Vieux 18/01/2007, 08h41   #4
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: getop_long avec plusieurs arguments

Ba alors comment fonctionne ls ?
Parce que je peux faire
ls -l monFichier1 monFichier2
et ça marche

Nicolas George a écrit :
> "n@pster" wrote in message
> <1169034324.503757.262560@m58g2000cwm.googlegroups .com>:
> > J'ai vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce
> > groupe, avec parfois des réponses du genre "getop ne permet pas cela"

>
> Il me semble bien.
>
> > alors comment fait on pour le faire ? parce que il y a un tas de
> > programme qui les utilisent (pratiquement toutes les commandes de bases
> > unix : ls, chown,...), je n'ai pas réussi à trouver de réponse
> > claire pour gérer tout mes paramètre...

>
> ls, chown et consorts ne prennent pas d'options à plusieurs arguments :il
> prennent des arguments qui ne sont pas des options. Tout ce qui reste après
> le passage de getopt, ce sont des arguments qui ne sont pas des options.
>
> D'ailleurs, si tu y réfléchis bien, quand tu lis :
>
> frobnicate --exclude foo bar baz qux
>
> comment sais-tu si bar est un argument à frobnicate, ou bien un argument à
> l'option --exclude ? Ça n'est pas possible.


  Réponse avec citation
Vieux 18/01/2007, 08h53   #5
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: getop_long avec plusieurs arguments

2007-01-18, 00:41(-08), n@pster:
> Ba alors comment fonctionne ls ?
> Parce que je peux faire
> ls -l monFichier1 monFichier2
> et ça marche

[...]

[Merci de poster a l'endroit]

monFichier2 et monFichier2 ne sont pas des arguments de l'option
-l, -l ne prend pas d'arguments. monFichier1 et monFichier1 sont
les arguments qu'il reste apres parsing des options.

Il est impossible qu'une option prenne un nombre variable
d'arguments a moins que ce nombre soit specifié d'une facon ou
d'une autre comme:

cmd -l 3 a b c d e

pour dire que -l prend ici 3 arguments (et que donc d et e sont
les arguments restant).

Mais getopt ne permet pas ca. getopt definit une convention de
passage d'options standard, qu'il vaut mieux essayer de suivre
pour garder une coherence.

Si tu veux passer plusieurs arguments a une option, utilise
plutot un separateur:

ps -p 123,124,234

Ici, -p prend un argument (pour getopt) mais le code de -p le
decoupe ensuite en suivant les virgules.

--
Stéphane
  Réponse avec citation
Vieux 18/01/2007, 17h54   #6
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: getop_long avec plusieurs arguments

Stephane Chazelas wrote in message
<slrnequde3.4ds.stephane.chazelas@spam.is.invalid> :
> Si tu veux passer plusieurs arguments a une option, utilise
> plutot un separateur:
>
> ps -p 123,124,234
>
> Ici, -p prend un argument (pour getopt) mais le code de -p le
> decoupe ensuite en suivant les virgules.


Berk. Ça veut dire écrire un parseur, et c'est l'horreur si on veut avoir un
des arguments qui contient le délimiteur. Je trouve:

ps -p 123 -p 124 -p 234

nettement préférable.
  Réponse avec citation
Vieux 22/01/2007, 00h12   #7
Rémi Moyen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: getop_long avec plusieurs arguments

n@pster wrote:

Salut,

> j'utilise getop_long pour parser les arguments passés à mon programme

[...]
> Ce qui est normal, mais comment faire pour lui faire prendre en compte
> que après un --file, il puisse y avoir plusieurs arguments ?


J'ai découvert il y a un moment argp qui, il me semble et pour autant
que ma mémoire ne soit pas trop mauvaise, permet de spécifier le nombre
d'arguments à une option.

Globalement, j'ai eu beaucoup de mal à piger comment ça marchait et je
m'en suis sorti avec les man et la doc chez Gnu :
http://www.gnu.org/software/libc/man...gram-Arguments

Mais il me semble aussi que d'une part argp ne permet pas d'avoir un
nombre variable d'arguments, pour cause des limitations décrites par les
autres, et d'autre part que c'est un truc Gnu et donc pas forcément
disponible sur les autres systèmes (en particulier, j'ai souvenir de
stations SunOS où ça n'existait pas).

Si ça peut t'aider...
--
Rémi Moyen
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 02h27.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,14084 seconds with 15 queries