qasim-gui: test liveness of lock owner.

This commit is contained in:
Glenn Y. Rolland 2011-09-10 13:53:19 +02:00
parent e1fd3ad761
commit 29ed8c2280

View file

@ -218,15 +218,23 @@ module Qasim
fd = IO::sysopen( lockfname, fd = IO::sysopen( lockfname,
Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT) Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT)
f = IO.open(fd) f = IO.open(fd)
f.syswrite( "Process.pid\n" ) f.syswrite( "#{Process.pid}\n" )
f.close f.close
@app.exec @app.exec
rescue Errno::EEXIST => e rescue Errno::EEXIST => e
# test if the other process still exist
masterpid = File.read(lockfname).strip
Process.kill(0, masterpid.to_i)
warn "error: Another instance of %s is already running." % APP_NAME warn "error: Another instance of %s is already running." % APP_NAME
exit 1 exit 1
rescue Errno::ESRCH => e
f = IO.open(fd)
f.syswrite( "#{Process.pid}\n" )
f.close
@app.exec
ensure ensure
masterpid = File.read(lockfname).strip masterpid = File.read(lockfname).strip
if masterpid == Process.pid then if masterpid.to_i == Process.pid then
FileUtils.rm lockfname FileUtils.rm lockfname
end end
end end