Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Perl File Handle Count not working as expected, why?

by TedPride (Priest)
on Jul 15, 2010 at 05:27 UTC ( #849704=note: print w/replies, xml ) Need Help??


in reply to Perl File Handle Count not working as expected, why?

For anyone too lazy to view source on the page, here's his original post with code tags:
#!/perl/me -w use strict; use FileHandle; my $i = 0; # Get the current Process Id my $proc = getpgrp(0); # Create 10 files.. while ($i < 10) { # Get a new File Handle my $fh = new FileHandle(); # Count the File Handle for this process... system ("ls -l /proc/$proc/fd/ | wc -l"); # Open a new File sysopen ($fh, "/tmp/$i", O_RDWR) or die "$!"; # Write something to the file print $fh "stuff \n"; #increment counter, to create a newer file. $i++; ## NO CLOSE... } /tmp> ./perl junk2.pl 5 5 5 5 5 5 5 5 5 5
I was expecting it to go UP by 1 each time in the loop, but it stayed at 5. Why?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://849704]
help
Chatterbox?
[davido]: I am not finding closing STDIN to be an adequate means of making getlogin return undef.
[Corion]: Maybe doing a double-fork (daemonizing) can make go that information away, but maybe not
[Corion]: But I think my knowledge of unix/Linux datastructures is several decades out of date, so I don't really know what information it keeps on processes
[oiskuu]: The useful bits that relate to your process can be found under /proc/self. What information are you thinking of? Tty name?
[tye]: I just daemonized and getlogin() still knew who I had been.
[tye]: perhaps loginuid ? Not that I concede that something not being in /proc means it is not useful.

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (8)
As of 2017-06-23 19:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (554 votes). Check out past polls.