[libvirt] [PATCH 3/4] Add a 'send-process-signal' command to virsh

Eric Blake eblake at redhat.com
Thu Nov 29 00:24:05 UTC 2012


> From: "Daniel P. Berrange" <berrange at redhat.com>
> 
> * tools/virsh.c: Add send-process-signal
> * tools/virsh.pod: Document new command
> ---
>  tools/virsh-domain.c | 93
>  ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tools/virsh.pod      | 27 +++++++++++++++
>  2 files changed, 120 insertions(+)
> 

> +static int getSignalNumber(const char *signame)
> +{
> +    int signum;
> +
> +    if (virStrToLong_i(signame, NULL, 10, &signum) >= 0)
> +        return signum;
> +
> +    if (STRPREFIX(signame, "sig"))
> +        signame += 3;

Please make this case-insensitive.  You just know some users
will want to type 'SIGKILL' instead of 'kill', and still have
it map to the right libvirt enum value.

> +
> +    if (STRPREFIX(signame, "rtmin+")) {
> +        signame += 6;
> +        if (virStrToLong_i(signame, NULL, 10, &signum) >= 0)
> +            return signum + VIR_DOMAIN_PROCESS_SIGNAL_RTMIN;

Okay, you did take care of realtime signals.  However, should
you do any validation that they aren't doing stupid stuff like
'rtmin+ -2'?

> +++ b/tools/virsh.pod
> @@ -1379,6 +1379,33 @@ B<Examples>
>    # send a tab, held for 1 second
>    virsh send-key --holdtime 1000 0xf
>  
> +=item B<send-process-signal> I<domain-id> [I<--host-pid>] I<pid>
> I<signame>
> +
> +Send a signal I<signame> to the process identified by I<pid> running
> in
> +the virtual domain I<domain-id>. The I<pid> is a process ID in the
> virtual
> +domain namespace.
> +
> +The I<signame> argument may be either an integer signal constant
> number,

Should we mention that these constants are hard-coded by libvirt, and
might not mention the signal numbers on either the client running
virsh, or the guest where the signal will be executed?




More information about the libvir-list mailing list