Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: hash elements are lost during reaping

by Anonymous Monk
on Dec 11, 2012 at 11:10 UTC ( #1008264=note: print w/replies, xml ) Need Help??


in reply to hash elements are lost during reaping

What am I doing wrong here?

You're assuming its the same hash , print out the reference and you'll see that its different,  warn \%TrappedPIDs;

But I'm guessing as you don't show the forking part

:)Mr. Peabody Explains fork()

Replies are listed 'Best First'.
Re^2: hash elements are lost during reaping
by umitd (Initiate) on Dec 11, 2012 at 11:30 UTC

    Thanks for the reply. My fork routine saves pids of children in another hash to be compared in the processing routine:

    sub StartJob { my $pid; my $sid = shift; FORK: { if ($pid = fork) { # # This is the dispatcher! # $JobPIDs{$pid} = $sid; # add pid, sid pair to th +e hash } elsif ($pid == 0) { ....

    The processing routine goes like this:

    foreach $pid ( keys(%TrappedPIDs) ) { $rc = $TrappedPIDs{$pid}; print " CHECKING: trapped pid: $pid RC: $rc \n"; if ( exists($JobPIDs{$pid}) and $rc == 0 ) { # do the processing .. }
    %TrappedPIDs is a global hash. How come it can be different?

      umitd:

      How come it can be different?

      With you showing only small code fragments, it's rather hard to say. It's kind of like the old joke:

      Goofus is searching for his diamond ring under a streetlamp.

      Gallant comes to help, and after about 15 minutes, he says "Hey--about where were you standing when you lost the ring?".

      Goofus: "Over there in the parking lot."

      Gallant (surprised): "Well, then why are you looking over here?"

      Goofus: "The light is better."

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1008264]
help
Chatterbox?
[Corion]: Ah - if that information is saved in a file, then you could theoretically spam that file and confuse getlogin(). So, don't use it for authentication :)
[tye]: that is what getlogin() certainly *used* to do. I don't believe that is what it certainly should do.
[davido]: /var/run/utmp is 664 i think.
[tye]: Note that my "man getlogin" says that it uses stdin when it should use /dev/tty (calling a glibc bug). But that does not appear to be the case when I test it. But maybe Perl's getlogin() is not using glibc's getlogin().
[oiskuu]: well, run a strace and see what the getlogin does for you.... As I said. SELinux probably has those security labels. But not regular linux.
[tye]: for example, read https://unix. stackexchange.com/ questions/146138/ loginuid-should-be -allowed-to-change -or-not-mutable-or -not
[tye]: I'm not using SELinux and it certainly appears to disagree with you. shrug
[tye]: Since you brought up /proc, oiskuu, I didn't see you respond to my suggestion of 'loginuid'. Does your /proc not have such?

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















    Results (554 votes). Check out past polls.