[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ale] Only one process

On 6/5/2010 7:06 AM, Jim Kinney wrote:
> Since lsof will show a file open for execution before a write of the pid
> is committed, use a grep on lsof for the count of opened copies. If
> greater than one, exit.

Still racy.  Two instances could start, both see more than one
copy of itself running, and bail without doing anything at all.
All you need is a context switch before lsof gets to run, and
there's lots of room for that.

Of course, the naive solution of just checking for /var/myname.pid
will work 99% of the time, but when it doesn't, you'll be
completely baffled.

-- JK

Forget Jesus: stars died so that you could be here today.
  - physicist Lawrence Krauss