Date: Sat, 17 Nov 2007 17:03:51 +0100 From: nikita kozlov <kozlov_n@epitech.net> To: freebsd-hackers@freebsd.org Subject: need help with sigaction and siginfo_t Message-ID: <1195315431.6172.13.camel@tonyhawk.epitech.net>
next in thread | raw e-mail | index | archive | help
hello, I'm a student and we are working on FreeBSD. My problem is i don't understand how to use SA_SIGINFO and siginfo_t. The following code caught my SIGUSR1 with a "kill -30 my_server_pid" from my shell. but siginfo_t is empty when i'm debugging my program with gdb. my output is : > pid 0 and in gdb i have : { si_signo = 30, si_errno = 0, si_code = 0, si_pid = 0, si_uid = 0, si_status = 0, si_addr = 0x2, si_value = {sigval_int = 0,sigval_ptr = 0x0}, si_band = 0, __spare__ = {0, 0, 0, 0, 0, 0, 0} } anyone have an idea why my siginfo_t is empty please ? Here is my code: #include <sys/types.h> #include <unistd.h> #include <signal.h> #include <stdio.h> static void addtrue(int sig, siginfo_t *info, void *ctx) { printf("pid %i\n", info->si_pid); } static void init_server() { struct sigaction test; memset(&test, 0, sizeof(test)); test.sa_flags = SA_SIGINFO; test.sa_sigaction = addtrue; sigaction(SIGUSR1, &test, NULL); getchar(); } int main() { printf("my pid: %i\n", getpid()); init_server(); return (0); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1195315431.6172.13.camel>