Sauriez-vous quelle est la longueur maximale, pour les arguments passés à un script, en ligne de commande ?
Parce que je tombe régulièrement sur ce message : "Impossible de démarrer l'exécution. La liste des arguments est trop longue."
C'est normal, et c'est une bonne chose. Le shell (cmd.exe j'imagine) doit placer tous ces arguments dans une zone de mémoire, qui est transmise au processus (python) qui doit pouvoir y accéder. Ne pas placer de limite présenterait un risque de déni de service.
Question de béotien : j'avais cru lire dans je ne sais plus quel forum (fr.comp.os.linux.configuration je crois), que sous Linux désormais un script shell n'avait plus de limite en nombre d'arguments. Ce n'est pas le cas ?
Désolé pour cette petite digression.
-- François Lafont
Bonjour,
Le 30/03/2012 09:39, Alain Ketterlin a écrit :
Sauriez-vous quelle est la longueur maximale, pour les arguments passés
à un script, en ligne de commande ?
Parce que je tombe régulièrement sur ce message : "Impossible de
démarrer l'exécution. La liste des arguments est trop longue."
C'est normal, et c'est une bonne chose. Le shell (cmd.exe j'imagine)
doit placer tous ces arguments dans une zone de mémoire, qui est
transmise au processus (python) qui doit pouvoir y accéder. Ne pas
placer de limite présenterait un risque de déni de service.
Question de béotien : j'avais cru lire dans je ne sais plus quel forum
(fr.comp.os.linux.configuration je crois), que sous Linux désormais un
script shell n'avait plus de limite en nombre d'arguments. Ce n'est pas
le cas ?
Sauriez-vous quelle est la longueur maximale, pour les arguments passés à un script, en ligne de commande ?
Parce que je tombe régulièrement sur ce message : "Impossible de démarrer l'exécution. La liste des arguments est trop longue."
C'est normal, et c'est une bonne chose. Le shell (cmd.exe j'imagine) doit placer tous ces arguments dans une zone de mémoire, qui est transmise au processus (python) qui doit pouvoir y accéder. Ne pas placer de limite présenterait un risque de déni de service.
Question de béotien : j'avais cru lire dans je ne sais plus quel forum (fr.comp.os.linux.configuration je crois), que sous Linux désormais un script shell n'avait plus de limite en nombre d'arguments. Ce n'est pas le cas ?
Oui et non : on peut augmenter la taille (via sysconf). A tout moment, tu peux voir la taille max avec : getconf ARG_MAX.
-- Alain.
Encolpe Degoute
Le 30/03/2012 12:19, Francois Lafont a écrit :
Question de béotien : j'avais cru lire dans je ne sais plus quel forum (fr.comp.os.linux.configuration je crois), que sous Linux désormais un script shell n'avait plus de limite en nombre d'arguments. Ce n'est pas le cas ? Désolé pour cette petite digression.
Cela dépend du shell utilisé (bash, zsh, tcsh...) et du programme lancé. faire un 'grep error /var/log/toto2011*' avec plusieurs dizaine de milliers de fichier correspondant à toto2011* peut mener à un nombre trop important d'argument lorsque toto2011* est remplacé par toutes les noms correspondants avant d'être envoyé à grep.
Il y aura le même problème avec un programme en python qui récupère ses arguments de la ligne de commande. C'est un problème avec la fonction d'extension des joker du shell, pas avec Python ou avec le script shell.
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Le 30/03/2012 12:19, Francois Lafont a écrit :
Question de béotien : j'avais cru lire dans je ne sais plus quel forum
(fr.comp.os.linux.configuration je crois), que sous Linux désormais un
script shell n'avait plus de limite en nombre d'arguments. Ce n'est
pas le cas ? Désolé pour cette petite digression.
Cela dépend du shell utilisé (bash, zsh, tcsh...) et du programme lancé.
faire un 'grep error /var/log/toto2011*' avec plusieurs dizaine de
milliers de fichier correspondant à toto2011* peut mener à un nombre
trop important d'argument lorsque toto2011* est remplacé par toutes les
noms correspondants avant d'être envoyé à grep.
Il y aura le même problème avec un programme en python qui récupère ses
arguments de la ligne de commande. C'est un problème avec la fonction
d'extension des joker du shell, pas avec Python ou avec le script shell.
--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
Question de béotien : j'avais cru lire dans je ne sais plus quel forum (fr.comp.os.linux.configuration je crois), que sous Linux désormais un script shell n'avait plus de limite en nombre d'arguments. Ce n'est pas le cas ? Désolé pour cette petite digression.
Cela dépend du shell utilisé (bash, zsh, tcsh...) et du programme lancé. faire un 'grep error /var/log/toto2011*' avec plusieurs dizaine de milliers de fichier correspondant à toto2011* peut mener à un nombre trop important d'argument lorsque toto2011* est remplacé par toutes les noms correspondants avant d'être envoyé à grep.
Il y aura le même problème avec un programme en python qui récupère ses arguments de la ligne de commande. C'est un problème avec la fonction d'extension des joker du shell, pas avec Python ou avec le script shell.
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Alain Ketterlin
Francois Lafont writes:
Oui et non : on peut augmenter la taille (via sysconf).
Ah, sysconf est une commande ? Car sur ma Squeeze je ne la trouve pas.
Oui et non : on peut augmenter la taille (via sysconf).
Ah, sysconf est une commande ? Car sur ma Squeeze je ne la trouve pas.
T'as raison c'est systcl.
-- Alain.
Francois Lafont
Le 30/03/2012 13:26, Encolpe Degoute a écrit :
Cela dépend du shell utilisé (bash, zsh, tcsh...) et du programme lancé. faire un 'grep error /var/log/toto2011*' avec plusieurs dizaine de milliers de fichier correspondant à toto2011* peut mener à un nombre trop important d'argument lorsque toto2011* est remplacé par toutes les noms correspondants avant d'être envoyé à grep.
Il y aura le même problème avec un programme en python qui récupère ses arguments de la ligne de commande. C'est un problème avec la fonction d'extension des joker du shell, pas avec Python ou avec le script shell.
Ok, merci pour ces précisions.
-- François Lafont
Le 30/03/2012 13:26, Encolpe Degoute a écrit :
Cela dépend du shell utilisé (bash, zsh, tcsh...) et du programme lancé.
faire un 'grep error /var/log/toto2011*' avec plusieurs dizaine de
milliers de fichier correspondant à toto2011* peut mener à un nombre
trop important d'argument lorsque toto2011* est remplacé par toutes les
noms correspondants avant d'être envoyé à grep.
Il y aura le même problème avec un programme en python qui récupère ses
arguments de la ligne de commande. C'est un problème avec la fonction
d'extension des joker du shell, pas avec Python ou avec le script shell.
Cela dépend du shell utilisé (bash, zsh, tcsh...) et du programme lancé. faire un 'grep error /var/log/toto2011*' avec plusieurs dizaine de milliers de fichier correspondant à toto2011* peut mener à un nombre trop important d'argument lorsque toto2011* est remplacé par toutes les noms correspondants avant d'être envoyé à grep.
Il y aura le même problème avec un programme en python qui récupère ses arguments de la ligne de commande. C'est un problème avec la fonction d'extension des joker du shell, pas avec Python ou avec le script shell.
Y'avait un piège : c'est sysctl (cé-té-el) du package procps. Désolé.
Oui, mais non. sysctl c'est pour les paramètre du noyau (ce que n'est pas le nombre d'arguments). getconf est founi avec la libc (en tout cas sous Debian/Ubuntu).
Y'avait un piège : c'est sysctl (cé-té-el) du package procps. Désolé.
Oui, mais non. sysctl c'est pour les paramètre du noyau (ce que n'est
pas le nombre d'arguments). getconf est founi avec la libc (en tout
cas sous Debian/Ubuntu).
Y'avait un piège : c'est sysctl (cé-té-el) du package procps. Désolé.
Oui, mais non. sysctl c'est pour les paramètre du noyau (ce que n'est pas le nombre d'arguments). getconf est founi avec la libc (en tout cas sous Debian/Ubuntu).
Laurent Pointal
Michel Claveau - MVP wrote:
Bonjour !
[Python 2.7 sous Windows]
Sauriez-vous quelle est la longueur maximale, pour les arguments passés à un script, en ligne de commande ?
Google (pour "windows command line maximum arguments length") m'a indiqué:
http://support.microsoft.com/kb/830473
""" Sur les ordinateurs qui exécutent Microsoft Windows XP ou une version ultérieure, la longueur maximale de chaîne que vous pouvez utiliser à l'invite de commandes est de 8 191 caractères. Sur les ordinateurs qui exécutent Windows 2000 ou Windows NT 4.0, la longueur maximale de chaîne que vous pouvez utiliser à l'invite de commandes est de 2 047 caractères.
Cette limitation s'applique à la ligne de commande, aux variables d'environnement individuelles (telles que la variable PATH) qui sont héritées par d'autres processus, et à toutes les extensions de variable d'environnement. Si vous exécutez des fichiers de commandes à partir de l'invite de commandes, cette limitation s'applique également au traitement des fichiers de commandes. """
Parce que je tombe régulièrement sur ce message : "Impossible de démarrer l'exécution. La liste des arguments est trop longue."
Au début, je pensais à une limite Windows, mais un petit programme compilé avec TCC n'a pas d'erreur, avec les mêmes arguments...
Autre question, corrolaire, comment contourner la limite ?
Le fichier de config qui devient fichier d'arguments... Eventuellement la lecture sur stdin que tu peux alors prendre via un pipe ou via une redirection de fichier.
A+ Laurent.
-- Laurent POINTAL - 3 allée des Orangers - 91940 Les Ulis - France Tél. 01 69 29 06 59
Michel Claveau - MVP wrote:
Bonjour !
[Python 2.7 sous Windows]
Sauriez-vous quelle est la longueur maximale, pour les arguments passés
à un script, en ligne de commande ?
Google (pour "windows command line maximum arguments length") m'a indiqué:
http://support.microsoft.com/kb/830473
"""
Sur les ordinateurs qui exécutent Microsoft Windows XP ou une version
ultérieure, la longueur maximale de chaîne que vous pouvez utiliser à
l'invite de commandes est de 8 191 caractères. Sur les ordinateurs qui
exécutent Windows 2000 ou Windows NT 4.0, la longueur maximale de chaîne que
vous pouvez utiliser à l'invite de commandes est de 2 047 caractères.
Cette limitation s'applique à la ligne de commande, aux variables
d'environnement individuelles (telles que la variable PATH) qui sont
héritées par d'autres processus, et à toutes les extensions de variable
d'environnement. Si vous exécutez des fichiers de commandes à partir de
l'invite de commandes, cette limitation s'applique également au traitement
des fichiers de commandes.
"""
Parce que je tombe régulièrement sur ce message :
"Impossible de démarrer l'exécution. La liste des arguments est trop
longue."
Au début, je pensais à une limite Windows, mais un petit programme
compilé avec TCC n'a pas d'erreur, avec les mêmes arguments...
Autre question, corrolaire, comment contourner la limite ?
Le fichier de config qui devient fichier d'arguments...
Eventuellement la lecture sur stdin que tu peux alors prendre via un pipe ou
via une redirection de fichier.
A+
Laurent.
--
Laurent POINTAL - laurent.pointal@laposte.net
3 allée des Orangers - 91940 Les Ulis - France
Tél. 01 69 29 06 59
Sauriez-vous quelle est la longueur maximale, pour les arguments passés à un script, en ligne de commande ?
Google (pour "windows command line maximum arguments length") m'a indiqué:
http://support.microsoft.com/kb/830473
""" Sur les ordinateurs qui exécutent Microsoft Windows XP ou une version ultérieure, la longueur maximale de chaîne que vous pouvez utiliser à l'invite de commandes est de 8 191 caractères. Sur les ordinateurs qui exécutent Windows 2000 ou Windows NT 4.0, la longueur maximale de chaîne que vous pouvez utiliser à l'invite de commandes est de 2 047 caractères.
Cette limitation s'applique à la ligne de commande, aux variables d'environnement individuelles (telles que la variable PATH) qui sont héritées par d'autres processus, et à toutes les extensions de variable d'environnement. Si vous exécutez des fichiers de commandes à partir de l'invite de commandes, cette limitation s'applique également au traitement des fichiers de commandes. """
Parce que je tombe régulièrement sur ce message : "Impossible de démarrer l'exécution. La liste des arguments est trop longue."
Au début, je pensais à une limite Windows, mais un petit programme compilé avec TCC n'a pas d'erreur, avec les mêmes arguments...
Autre question, corrolaire, comment contourner la limite ?
Le fichier de config qui devient fichier d'arguments... Eventuellement la lecture sur stdin que tu peux alors prendre via un pipe ou via une redirection de fichier.
A+ Laurent.
-- Laurent POINTAL - 3 allée des Orangers - 91940 Les Ulis - France Tél. 01 69 29 06 59
Oui, mais non. sysctl c'est pour les paramètre du noyau (ce que n'est pas le nombre d'arguments). getconf est founi avec la libc (en tout cas sous Debian/Ubuntu).
Oui, mais non. sysctl c'est pour les paramètre du noyau (ce que n'est
pas le nombre d'arguments). getconf est founi avec la libc (en tout
cas sous Debian/Ubuntu).
Oui, mais non. sysctl c'est pour les paramètre du noyau (ce que n'est pas le nombre d'arguments). getconf est founi avec la libc (en tout cas sous Debian/Ubuntu).