On Tue, Oct 5, 2010 at 3:36 AM, Michal Novotny <
minovotn@xxxxxxxxxx <mailto:
minovotn@xxxxxxxxxx>> wrote:
Hi Srujan,
what about adding a signal handler to qemu-dm in the
tools/ioemu-dir of the user-space tools? Using the signal() API?
Nevertheless why would you like to catch SIGKILL? This one (as can
be seen using included program source and killing it using kill -9
pid or kill -SIGKILL pid) is not being caught at all nevertheless
most of the other signals can be caught.
This is the source of the example mentioned:
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
void sig_handler(int sig) {
fprintf(stderr, "Signal %d caught.\n", sig);
exit(sig);
}
int main()
{
signal(SIGINT, sig_handler);
signal(SIGKILL, sig_handler);
sleep(10000);
return 0;
}
When I did try SIGINT (Ctrl + C or kill -2 pid) it caught the
signal well but when I did try kill -9 pid (or kill -SIGKILL pid
respectively) it was not working at all since it killed the
process instead of going to the signal handler. When you need to
catch signals like interruption signal (Ctrl + C one) this will
work fine.
Michal
On 10/04/2010 09:03 PM, Srujan D. Kotikela wrote:
Hi,
I am trying to capture SIGKILL through event channel.
On my Dom0, the following process is running (remaining code
in attachment).
int main(void){
int ret, dom, remote_dom;
//initialize domains
dom=0;
remote_dom=2;
//create the event channel
ret = create_channel(dom, remote_dom);
if (0 == ret) {
printf("\n Event Channel established successfully \n");
} else {
return -1; //EVENT_CHANNEL_CREATION_FAILED
}
//wait 20 seconds for an event to occur in DomU
wait_for_event(20);
//close the opened interfaces
close_channel();
return 0;
}
While this process is running; I killed a process in DomU
using `*kill SIGKILL pid*`
How can I capture this event (occured in DomU) at the Dom0. I
watched /dev/xen/evtchn, but no notification.
--
Srujan D. Kotikela
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx