Mail Archives: cygwin/2005/12/02/18:12:12
Hi,
Cygwin defines SA_SIGINFO, but it doesn't seem to be implemented: the
following program gets in "info" just 0x0 or a strange pointer. Could
it be supported somehow? The bit of information I'd really need is
info->si_code, so as to know whether the signal is sent by "kernelspace"
(because of alarm, setitimer, ...) or by "userspace" (kill, raise).
Regards,
Samuel
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
void handler (int sig, siginfo_t *info, void *uc) {
fprintf (stderr,"%d: %p %p\n", sig, info, uc);
}
void *foo (void *bar) {
while(1) pause ();
return NULL;
}
int main (void) {
struct sigaction sa;
pthread_t t;
sigemptyset (&sa.sa_mask);
sa.sa_flags = SA_SIGINFO;
sa.sa_sigaction = handler;
sigaction (SIGALRM, &sa, NULL);
sigaction (SIGINT, &sa, NULL);
sigaction (SIGWINCH, &sa, NULL);
pthread_create (&t,NULL,foo,NULL);
alarm (5);
pthread_kill (t,SIGINT);
raise (SIGINT);
sleep (10);
sleep (10);
return 0;
}
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -