Skip Menu |
Report information
Id: 39954
Status: rejected
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: tom [at] trap.mtview.ca.us
Cc:
AdminCc:

Operating System: Linux
PatchStatus: (no value)
Severity: medium
Type: core
Perl Version: 5.8.8
Fixed In: (no value)



Subject: Should use only file descriptors > $^F for arbitrary file handles.
Date: Tue, 25 Jul 2006 05:16:24 -0700
To: perlbug [...] perl.org
From: Tom Lear <tom [...] trap.mtview.ca.us>
Download (untitled) / with headers
text/plain 3.7k
This is a bug report for perl from tom@trap.mtview.ca.us, generated with the help of perlbug 1.35 running under perl v5.8.8. ----------------------------------------------------------------- [Please enter your report here] This piece of code gives FOO file descriptor 0 preventing cat from being able to dup2 to file descriptor 0. #!/usr/bin/perl close(STDIN); open(FOO, '/dev/null'); pipe(PIN, COUT); pipe(CIN, POUT); if(!fork) { close(PIN); close(POUT); open(STDIN, '<&CIN'); open(STDOUT, '>&COUT'); exec('cat'); } close(CIN); close(COUT); print POUT "Piped through cat...\n"; close(POUT); print while(<PIN>); [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=medium --- Site configuration information for perl v5.8.8: Configured by Debian Project at Sun Jun 11 16:26:10 UTC 2006. Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=linux, osvers=2.6.16.4, archname=i486-linux-gnu-thread-multi uname='linux ninsei 2.6.16.4 #1 smp preempt tue apr 11 23:28:01 pdt 2006 i686 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.1.2 20060604 (prerelease) (Debian 4.1.1-2)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.3.6.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8 gnulibc_version='2.3.6' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' Locally applied patches: --- @INC for perl v5.8.8: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . --- Environment for perl v5.8.8: HOME=/home/tom LANG=en_US LANGUAGE=en_US:en_GB:en LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/tom/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/bin/X11:/usr/games:. PERL_BADLANG (unset) SHELL=/bin/zsh
Subject: Should use only file descriptors > $^F for arbitrary file handles.
Date: Tue, 25 Jul 2006 05:24:48 -0700
To: perlbug [...] perl.org
From: Tom Lear <tom [...] trap.mtview.ca.us>
Download (untitled) / with headers
text/plain 3.7k
This is a bug report for perl from tom@trap.mtview.ca.us, generated with the help of perlbug 1.35 running under perl v5.8.8. ----------------------------------------------------------------- [Please enter your report here] This piece of code gives FOO file descriptor 0 preventing cat from being able to dup2 to file descriptor 0. #!/usr/bin/perl close(STDIN); open(FOO, '/dev/null'); pipe(PIN, COUT); pipe(CIN, POUT); if(!fork) { close(PIN); close(POUT); open(STDIN, '<&CIN'); open(STDOUT, '>&COUT'); exec('cat'); } close(CIN); close(COUT); print POUT "Piped through cat...\n"; close(POUT); print while(<PIN>); [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=medium --- Site configuration information for perl v5.8.8: Configured by Debian Project at Sun Jun 11 16:26:10 UTC 2006. Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=linux, osvers=2.6.16.4, archname=i486-linux-gnu-thread-multi uname='linux ninsei 2.6.16.4 #1 smp preempt tue apr 11 23:28:01 pdt 2006 i686 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.1.2 20060604 (prerelease) (Debian 4.1.1-2)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.3.6.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8 gnulibc_version='2.3.6' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' Locally applied patches: --- @INC for perl v5.8.8: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . --- Environment for perl v5.8.8: HOME=/home/tom LANG=en_US LANGUAGE=en_US:en_GB:en LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/tom/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/bin/X11:/usr/games:. PERL_BADLANG (unset) SHELL=/bin/zsh
Subject: Should use only file descriptors > $^F for arbitrary file handles.
Date: Tue, 25 Jul 2006 05:48:27 -0700
To: perlbug [...] perl.org
From: Tom Lear <tom [...] trap.mtview.ca.us>
Download (untitled) / with headers
text/plain 3.7k
This is a bug report for perl from tom@trap.mtview.ca.us, generated with the help of perlbug 1.35 running under perl v5.8.8. ----------------------------------------------------------------- [Please enter your report here] This piece of code gives FOO file descriptor 0 preventing cat from being able to dup2 to file descriptor 0. #!/usr/bin/perl close(STDIN); open(FOO, '/dev/null'); pipe(PIN, COUT); pipe(CIN, POUT); if(!fork) { close(PIN); close(POUT); open(STDIN, '<&CIN'); open(STDOUT, '>&COUT'); exec('cat'); } close(CIN); close(COUT); print POUT "Piped through cat...\n"; close(POUT); print while(<PIN>); [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=medium --- Site configuration information for perl v5.8.8: Configured by Debian Project at Sun Jun 11 16:26:10 UTC 2006. Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=linux, osvers=2.6.16.4, archname=i486-linux-gnu-thread-multi uname='linux ninsei 2.6.16.4 #1 smp preempt tue apr 11 23:28:01 pdt 2006 i686 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.1.2 20060604 (prerelease) (Debian 4.1.1-2)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.3.6.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8 gnulibc_version='2.3.6' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' Locally applied patches: --- @INC for perl v5.8.8: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . --- Environment for perl v5.8.8: HOME=/home/tom LANG=en_US LANGUAGE=en_US:en_GB:en LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/tom/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/bin/X11:/usr/games:. PERL_BADLANG (unset) SHELL=/bin/zsh
Subject: Re: [perl #39956] Should use only file descriptors > $^F for arbitrary file handles.
Date: Tue, 25 Jul 2006 18:31:05 +0200
To: perl5-porters [...] perl.org
From: "Rafael Garcia-Suarez" <rgarciasuarez [...] gmail.com>
Download (untitled) / with headers
text/plain 639b
On 25/07/06, via RT Tom Lear <perlbug-followup@perl.org> wrote: Show quoted text
> This piece of code gives FOO file descriptor 0 preventing cat from being > able to dup2 to file descriptor 0.
I think that's intended behaviour. The usual way to discard STDIN is to reopen it to /dev/null, not to close it (in perl as in C.) Show quoted text
> #!/usr/bin/perl > > close(STDIN); > open(FOO, '/dev/null'); > > pipe(PIN, COUT); > pipe(CIN, POUT); > if(!fork) { > close(PIN); > close(POUT); > open(STDIN, '<&CIN'); > open(STDOUT, '>&COUT'); > exec('cat'); > } > close(CIN); > close(COUT); > print POUT "Piped through cat...\n"; > close(POUT); > print while(<PIN>);
CC: bugs-bitbucket [...] rt.perl.org
Subject: Re: [perl #39947] Should use only file descriptors > $^F forarbitrary file handles.
Date: Wed, 26 Jul 2006 07:10:11 +0100
To: perl5-porters [...] perl.org
From: Nick Ing-Simmons <nick [...] ing-simmons.net>
Download (untitled) / with headers
text/plain 5.3k
Tom Lear <perl5-porters@perl.org> writes: Show quoted text
># New Ticket Created by Tom Lear ># Please include the string: [perl #39947] ># in the subject line of all future correspondence about this issue. ># <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=39947 > > > >This is a bug report for perl from tom@trap.mtview.ca.us, >generated with the help of perlbug 1.35 running under perl v5.8.8.
We seem to have got 3 copies of this ticket. Show quoted text
> > >----------------------------------------------------------------- >[Please enter your report here] > >This piece of code gives FOO file descriptor 0
True - it is supposed to as there is existing code that does explict close(STDIN); open(...) relying on open getting lowest available fileno. Show quoted text
>preventing cat from being >able to dup2 to file descriptor 0.
Cat shouldn't be trying. But perl child process's open(STDIN,'<&CIN'); should So there is a bug here. Strace shows: 9939 close(5 <unfinished ...> 9939 <... close resumed> ) = 0 9939 close(8 <unfinished ...> 9939 <... close resumed> ) = 0 STDIN: 9939 dup(7 <unfinished ...> 9939 <... dup resumed> ) = 5 9939 ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS <unfinished ...> 9939 <... ioctl resumed> , 0xbfffea88) = -1 EINVAL (Invalid argument) 9939 _llseek(5, 0, 0xbfffeac0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 9939 fstat64(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 9939 fcntl64(5, F_SETFD, FD_CLOEXEC) = 0 No dup2 there. Now STDOUT 9939 dup(6) = 8 9939 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfffea88) = -1 EINVAL (Invalid argument) 9939 _llseek(8, 0, 0xbfffeac0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 9939 fstat64(8, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 9939 dup2(8, 1) = 1 9939 close(8) = 0 But that is as expected. Show quoted text
>#!/usr/bin/perl > >close(STDIN); >open(FOO, '/dev/null'); > >pipe(PIN, COUT); >pipe(CIN, POUT); >if(!fork) { > close(PIN); > close(POUT); > open(STDIN, '<&CIN'); > open(STDOUT, '>&COUT'); > exec('cat'); >} >close(CIN); >close(COUT); >print POUT "Piped through cat...\n"; >close(POUT); >print while(<PIN>); > >[Please do not change anything below this line] >----------------------------------------------------------------- >--- >Flags: > category=core > severity=medium >--- >Site configuration information for perl v5.8.8: > >Configured by Debian Project at Sun Jun 11 16:26:10 UTC 2006. > >Summary of my perl5 (revision 5 version 8 subversion 8) configuration: > Platform: > osname=linux, osvers=2.6.16.4, archname=i486-linux-gnu-thread-multi > uname='linux ninsei 2.6.16.4 #1 smp preempt tue apr 11 23:28:01 pdt >2006 i686 gnulinux ' > config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN >-Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr >-Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 >-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 >-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local >-Dsitelib=/usr/local/share/perl/5.8.8 >-Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 >-Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 >-Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl >-Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm >-Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' > hint=recommended, useposix=true, d_sigaction=define > usethreads=define use5005threads=undef useithreads=define >usemultiplicity=define > useperlio=define d_sfio=undef uselargefiles=define usesocks=undef > use64bitint=undef use64bitall=undef uselongdouble=undef > usemymalloc=n, bincompat5005=undef > Compiler: > cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS >-DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include >-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', > optimize='-O2', > cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN >-fno-strict-aliasing -pipe -I/usr/local/include' > ccversion='', gccversion='4.1.2 20060604 (prerelease) (Debian >4.1.1-2)', gccosandvers='' > intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 > d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 > ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', >lseeksize=8 > alignbytes=4, prototype=define > Linker and Libraries: > ld='cc', ldflags =' -L/usr/local/lib' > libpth=/usr/local/lib /lib /usr/lib > libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt > perllibs=-ldl -lm -lpthread -lc -lcrypt > libc=/lib/libc-2.3.6.so, so=so, useshrplib=true, >libperl=libperl.so.5.8.8 > gnulibc_version='2.3.6' > Dynamic Linking: > dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' > cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' > >Locally applied patches: > > >--- >@INC for perl v5.8.8: > /etc/perl > /usr/local/lib/perl/5.8.8 > /usr/local/share/perl/5.8.8 > /usr/lib/perl5 > /usr/share/perl5 > /usr/lib/perl/5.8 > /usr/share/perl/5.8 > /usr/local/lib/site_perl > . > >--- >Environment for perl v5.8.8: > HOME=/home/tom > LANG=en_US > LANGUAGE=en_US:en_GB:en > LD_LIBRARY_PATH (unset) > LOGDIR (unset) > >PATH=/home/tom/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/bin/X11:/usr/games:. > PERL_BADLANG (unset) > SHELL=/bin/zsh
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 293b
On Tue Jul 25 23:10:56 2006, ni-s wrote: Show quoted text
> >This piece of code gives FOO file descriptor 0
> > True - it is supposed to as there is existing code that does > explict > close(STDIN); > open(...) > > relying on open getting lowest available fileno.
In that case, can I mark this as rejected?
Download (untitled) / with headers
text/plain 488b
On Sun Sep 26 14:36:06 2010, sprout wrote: Show quoted text
> On Tue Jul 25 23:10:56 2006, ni-s wrote:
> > >This piece of code gives FOO file descriptor 0
> > > > True - it is supposed to as there is existing code that does > > explict > > close(STDIN); > > open(...) > > > > relying on open getting lowest available fileno.
> > In that case, can I mark this as rejected?
Yes. fd0 shouldn't be closed. The only reason one would close it would be to replace it. That's often done using the above code.
Download (untitled) / with headers
text/plain 100b
To assign CIN to fd0, open(STDIN, '<&=0'); open(STDIN, '<&CIN'); or POSIX::dup2(fileno(CIN), 0);
Subject: Re: [perl #39956] Should use only file descriptors > $^F for arbitrary file handles.
Date: Wed, 13 Oct 2010 05:32:09 -0700
To: perlbug-followup [...] perl.org
From: Tom <tom [...] trap.mtview.ca.us>
Download (untitled) / with headers
text/plain 760b
On 09/26/2010 03:18 PM, Eric Brine via RT wrote: Show quoted text
> On Sun Sep 26 14:36:06 2010, sprout wrote: >
>> On Tue Jul 25 23:10:56 2006, ni-s wrote: >>
>>>> This piece of code gives FOO file descriptor 0 >>>>
>>> True - it is supposed to as there is existing code that does >>> explict >>> close(STDIN); >>> open(...) >>> >>> relying on open getting lowest available fileno. >>>
>> In that case, can I mark this as rejected? >>
> Yes. fd0 shouldn't be closed. The only reason one would close it would > be to replace it. That's often done using the above code. >
That has nothing to do with it... the documentation said $^F is one less than the lowest file descriptor perl will automatically assign, and that doesn't work. - Tom


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org