Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

os.execl(), Unknown command

3 réponses
Avatar
R12y
Bonjour,

Désolé, je squatte le groupe, mais bon vu que j'expérimente et que je me
plante,...
Je n'arrive pas à interpreter le message d'erreur suivant.
Je donne d'abord le code et le resultat de l'execution.
D'ailleurs, il y a un petit souci entre moi et os.execl():

os.execl('/bin/ls', '-l') est incorrect.
C'est os.execl('/bin/ls', 'l') qui l'est.
Il y a donc un mécanisme qui rajoute le '-', avant les options.
Je pense que c'est la source de mon problème, mais parmi les 'os.exec*()'
je n'en ai pas vu qui ne rajoute pas ce '-'.
Ceci dit, il y a aussi peut-etre un souci de compréhension de la façon
avec laquelle on donne les arguments... peut-être que je devrais donner
les arguments en une seule chaine?

Genre:
'co http://xxx/xxx/xxx .'
Au lieu de la splitter mot par mot?

#####################################################
#!/usr/bin/python

import os

lance=os.execl
cd=os.chdir
products='/usr/lib/zope/lib/python/Products'
cd(products)
svn='/usr/bin/svn'
url='http://svn.nuxeo.org/pub/bundles/CPS-3-full'
lance(svn,'co', url, '.')
######################################################

En executant:

root-localhost>>>>/usr/local/bin/svn-cps
Unknown command: 'http://svn.nuxeo.org/pub/bundles/CPS-3-full'
Type 'svn help' for usage.


--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/

3 réponses

Avatar
Do Re Mi chel La Si Do
Bonjour !

Tente : os.execl('/bin/ls','ls -l')

Mais, bon, je suis sous windows, et ne peut donc pas tester cette commande.
Sous windows, ls est remplacé par dir, qui est une commande interne.
Cependant, si j'utilise un exécutable, ça fonctionne.

@-salutations

Michel Claveau
Avatar
Paul Gaborit
À (at) Tue, 13 Sep 2005 00:31:43 +0200,
R12y écrivait (wrote):
D'ailleurs, il y a un petit souci entre moi et os.execl():

os.execl('/bin/ls', '-l') est incorrect.


Ça fonctionne... mais sans '-l' !

C'est os.execl('/bin/ls', 'l') qui l'est.


Tout pareil...

L'explication :
- Le premier argument de 'execl' est le chemin d'accès au binaire à
exécuter.
- Le deuxième argument est le nom sous lequel le 'process' sera vu
(par 'ps' par exemple).
- Les autres arguments sont ceux réellement reçu par le process.

Donc :

os.execl('/bin/ls', 'ls', -l')

ou

os.execl('/bin/ls', '/bin/ls', -l')

... et 'ls' traite bien le '-l' !!!

Il y a donc un mécanisme qui rajoute le '-', avant les options.


Non !!!

Ceci dit, il y a aussi peut-etre un souci de compréhension de la façon
avec laquelle on donne les arguments... peut-être que je devrais donner
les arguments en une seule chaine?


Non plus...

#####################################################
#!/usr/bin/python

import os

lance=os.execl
cd=os.chdir
products='/usr/lib/zope/lib/python/Products'
cd(products)
svn='/usr/bin/svn'
url='http://svn.nuxeo.org/pub/bundles/CPS-3-full'
lance(svn,'co', url, '.')


ici :

lance(svn, svn, 'co', url, '.')

... devrait bien fonctionner.


--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
R12y
On Tue, 13 Sep 2005 10:24:08 +0200, Paul Gaborit wrote:

L'explication :
- Le premier argument de 'execl' est le chemin d'accès au binaire à
exécuter.
- Le deuxième argument est le nom sous lequel le 'process' sera vu
(par 'ps' par exemple).
- Les autres arguments sont ceux réellement reçu par le process.


Quand on utilise execv(), où la liste des arguments est une liste, j'avais
bien vu dans la doc que liste[0] était ce que tu décris.

J'avais pas "tiqué" et applicqué ça à execl()

Merci Paul, merci aussi les autres :-)

--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/