From owner-freebsd-hackers@FreeBSD.ORG Sat Nov 17 16:30:38 2007 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2D24C16A418 for ; Sat, 17 Nov 2007 16:30:38 +0000 (UTC) (envelope-from kozlov_n@epitech.net) Received: from smtp.epitech.net (smtp.epitech.net [163.5.255.101]) by mx1.freebsd.org (Postfix) with SMTP id 8531613C4D5 for ; Sat, 17 Nov 2007 16:30:37 +0000 (UTC) (envelope-from kozlov_n@epitech.net) Received: (qmail 15178 invoked from network); 17 Nov 2007 16:03:50 -0000 Received: from unknown (HELO epitech.net) (10.42.1.60) by 0 with SMTP; 17 Nov 2007 16:03:50 -0000 Received: from [10.42.14.40] (tonyhawk.epitech.net [10.42.14.40]) by epitech.net id lAHG3pu06337 for by sendmail 42 - Bocal 2007 Sat, 17 Nov 2007 17:03:51 +0100 (CET) From: nikita kozlov To: freebsd-hackers@freebsd.org Content-Type: text/plain Date: Sat, 17 Nov 2007 17:03:51 +0100 Message-Id: <1195315431.6172.13.camel@tonyhawk.epitech.net> Mime-Version: 1.0 X-Mailer: Evolution 2.10.3 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Subject: need help with sigaction and siginfo_t X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Nov 2007 16:30:38 -0000 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 #include #include #include 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); }