Re: how can I make sure only one instance of gkrellm runs
- From: "Patrick O'Callaghan" <pocallaghan@xxxxxxxxx>
- Date: Thu, 16 Oct 2008 23:00:27 -0430
On Fri, 2008-10-17 at 12:56 +1100, Cameron Simpson wrote:
On 16Oct2008 18:38, Patrick O'Callaghan <pocallaghan@xxxxxxxxx> wrote:
| 2) What does "kill -0" do? "man kill" doesn't mention this possibilty.
It is the standard way of probing for a process given a pid.
It does everything any other signal does except get delivered to the
process (the process never sees it).
There are three outcomes for the caller:
success:
the process exists
failure:
no such process: the process does not exist
permission denied: the process exists, but you don't own it
You're looking at the wrong man page, BTW.
"man 3p kill" says:
The kill() function shall send a signal to a process or a group of
processes specified by pid. The signal to be sent is specified by sig and
is either one from the list given in <signal.h> or 0. If sig is 0 (the null
signal), error checking is performed but no signal is actually sent. The
null signal can be used to check the validity of pid.
"man 2 kill" says:
If sig is 0, then no signal is sent, but error checking is still
performed.
This behaviour dates from at least V7 UNIX (1970s) and probly earlier.
Yes, I used to know that 30 years ago but had forgotten it. Which is why
I looked at the man page. Not the "wrong" man page but the man page for
the "kill" command. The fact that there's another man page for the
"kill()" system call and yet another for the "kill()" POSIX library
function is beside the point, since the script is executing the command
and not the syscall or library function. In fact the "help kill" text
for the shell builtin doesn't mention this possibility either, i.e. we
have a documentation bug.
| 3) The script has an obvious race condition, (i.e. if run from several
| places simultaneously, there is a non-zero probability of starting more
| than one process). This is because running the process and creating the
| pidfile are two separate actions.
Absolutely; I may even have mentioned this when I posted the script for
this user some months ago. But for a single person running a single GUI
it may serve. There are better ways, without races, but they are a bit
more cumbersome to script and to understand.
I'm pretty sure I saw a package announced recently which could possibly
be useful in this situation. It would either execute a program or signal
it if it was already running. Wish I could remember the name of the
thing.
poc
--
fedora-list mailing list
fedora-list@xxxxxxxxxx
To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines
- References:
- Re: how can I make sure only one instance of gkrellm runs
- From: Cameron Simpson
- Re: how can I make sure only one instance of gkrellm runs
- Prev by Date: what happened to the icon to configure automatic updates
- Next by Date: Re: EeePC - to Fedora or not?
- Previous by thread: Re: how can I make sure only one instance of gkrellm runs
- Next by thread: How do you get a service to start after a reboot automatically...
- Index(es):
Relevant Pages
|
Loading