in reply to Re: Logical Conundrum (processes)
in thread Logical Conundrum

Or, if you need only one lock, open $0 and flock it. Unique to the script!

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.

  • Comment on •Re: Re: Logical Conundrum (processes)

Replies are listed 'Best First'.
Re: •Re: Re: Logical Conundrum (processes)
by mcogan1966 (Monk) on Dec 01, 2003 at 19:18 UTC
    $0 may be unique to the script, but that is a BIG problem. What I have is a main program (parent) spawning a number of child programs. Each of the child programs is trying to print to <STDOUT>. What I am having is when 2 children are trying to print to <STDOUT> at the same time, the information gets mixed. By trying to set flock(), I am trying to prevent one child from printing to <STDOUT> while another child is in the middle of doing that. The end result should be that I don't have any mixed outputs.

    Problem is, the traditional uses of flock() aren't helping, they are creating either the same problem with the output, or they are creating runaway processes.

    I've created a file, "lock_file". I have a lock_ex subroutine that returns a file handle when it can create an exclusive lock. I need to check to see if that is in place, if so wait, if not go ahead and print to <STDOUT>.