URL: https://linuxfr.org/forums/programmation-perl/posts/perl-aix-et-les-limits Title: Perl, AIX et les limits Authors: Dabowl_92 Date: 2008年04月01日T18:13:45+02:00 Tags: Score: 0 Bonjour, Voilà je rencontre un soucis avec Perl sous AIX, je cherche à comprendre pourquoi un paramètre sytème n'est pas pris en compte dans l'environnement de Perl. J'ai configuré sous AIX les limit avec les valeurs suivantes : time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) unlimited memory(kbytes) unlimited coredump(blocks) 2097151 nofiles(descriptors) 2000 Ces paramètres sont bien pris en compte par n'importe quelle session shell SAUF dans l'environnement Perl : # perl system("ulimit -a"); time(seconds) unlimited file(blocks) unlimited data(kbytes) 2097152 stack(kbytes) unlimited memory(kbytes) unlimited coredump(blocks) 2097151 nofiles(descriptors) 2000 On remarque que le paramètre "data" ne correspond pas à ce qui est paramétré dans le système. D'après cette documentation [http://perl.enstimac.fr/DocFr/perlfunc.html#item_system](http://perl.enstimac.fr/DocFr/perlfunc.html#item_system) Il apparait que la fonction system() fait appel à un shell de cette façon : sh -c "argument" Or, si je reproduis ce que fait perl, j'obtiens bien les bonnes valeurs : # sh -c "ulimit -a" time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) unlimited memory(kbytes) unlimited coredump(blocks) 2097151 nofiles(descriptors) 2000 Mais finalement, je ne suis pas sûr de bien reproduire l'environnement de perl car le shell que je lance est fils du mien (l'interactif), et donc les paramètres sont à priori bien hérités. D'après mes recherches sur la toile, je trouve bien des gens qui ont le même problème que moi : [http://www.perlmonks.org/?node_id=651397](http://www.perlmonks.org/?node_id=651397) Les solutions proposées ne sont pas envisageables car les scripts perl que j'exécute sont livrés par notre éditeur et il est hors de question de les modifier, même si c'est tentant :-) De même que l'installation d'un module supplémentaire est à exclure. [http://www.tek-tips.com/viewthread.cfm?qid=1454391&page=2](http://www.tek-tips.com/viewthread.cfm?qid=1454391&page=2) L'astuce proposée ici m'a paru après coup la plus évidente, il suffirait de basculer sur les binaires 64 bits, ce que j'ai fait avec le script qui va bien, mais le problème reste toujours là, le paramètre "data" est bloqué à 2048Mo. Je précise que aix tourne bien en 64 bits (le noyau) et que le CPU est aussi 64 bits. Est-ce que quelqu'un pourrait éclairer ma lanterne ? Merci par avance. PS: Voici le résultat d'un perl -V Summary of my perl5 (revision 5.0 version 8 subversion 2) configuration: £spaces£ £/spaces£Platform: £spaces£ £/spaces£osname=aix, osvers=5.2.0.0, archname=aix-thread-multi-64all £spaces£ £/spaces£uname='aix perlfly 2 5 000ad7df4c00 ' £spaces£ £/spaces£config_args='' £spaces£ £/spaces£hint=recommended, useposix=true, d_sigaction=define £spaces£ £/spaces£usethreads=define use5005threads=undef useithreads=define usemultiplicity=define £spaces£ £/spaces£useperlio=define d_sfio=undef uselargefiles=define usesocks=undef £spaces£ £/spaces£use64bitint=define use64bitall=define uselongdouble=undef £spaces£ £/spaces£usemymalloc=n, bincompat5005=undef £spaces£ £/spaces£Compiler: £spaces£ £/spaces£cc='cc_r', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q64 -DUSE_64_BIT_ALL -q64', £spaces£ £/spaces£optimize='-O', £spaces£ £/spaces£cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT' £spaces£ £/spaces£ccversion='', gccversion='', gccosandvers='' £spaces£ £/spaces£intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321 £spaces£ £/spaces£d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8 £spaces£ £/spaces£ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 £spaces£ £/spaces£alignbytes=8, prototype=define £spaces£ £/spaces£Linker and Libraries: £spaces£ £/spaces£ld='ld', ldflags ='-brtl -bmaxdata:0x80000000 -q64 -b64' £spaces£ £/spaces£libpth=/lib /usr/lib /usr/ccs/lib £spaces£ £/spaces£libs=-lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lpthreads -lc_r -lbsd £spaces£ £/spaces£perllibs=-lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc_r -lbsd £spaces£ £/spaces£libc=/lib/libc.a, so=a, useshrplib=true, libperl=libperl.a £spaces£ £/spaces£gnulibc_version='' £spaces£ £/spaces£Dynamic Linking: £spaces£ £/spaces£dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -bE:/usr/opt/perl5/lib64/5.8.2/aix-thread-multi-64all/CORE/perl.exp' £spaces£ £/spaces£cccdlflags=' ', lddlflags='-b64 -bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -bnoentry -lpthreads -lc_r' Characteristics of this binary (from libperl): £spaces£ £/spaces£Compile-time options: MULTIPLICITY USE_ITHREADS USE_64_BIT_INT USE_64_BIT_ALL USE_LARGE_FILES PERL_IMPLICIT_CONTEXT £spaces£ £/spaces£Built under aix £spaces£ £/spaces£Compiled at Feb 7 2005 19:07:12 £spaces£ £/spaces£@INC: £spaces£ £/spaces£/usr/opt/perl5/lib64/5.8.2/aix-thread-multi-64all £spaces£ £/spaces£/usr/opt/perl5/lib64/5.8.2 £spaces£ £/spaces£/usr/opt/perl5/lib64/site_perl/5.8.2/aix-thread-multi-64all £spaces£ £/spaces£/usr/opt/perl5/lib64/site_perl/5.8.2 £spaces£ £/spaces£/usr/opt/perl5/lib64/site_perl

AltStyle によって変換されたページ (->オリジナル) /