Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Nov 2007 15:56:29 +0100
From:      Tijl Coosemans <tijl@ulyssis.org>
To:        kozlov_n@epitech.net
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: need help with sigaction and siginfo_t
Message-ID:  <200711181556.30559.tijl@ulyssis.org>
In-Reply-To: <20071118143941.bl0onxxsn4wkgg8g@webmail.epitech.net>
References:  <1195315431.6172.13.camel@tonyhawk.epitech.net> <200711181334.41654.tijl@ulyssis.org> <20071118143941.bl0onxxsn4wkgg8g@webmail.epitech.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 18 November 2007 14:39:41 kozlov_n@epitech.net wrote:
> Tijl Coosemans <tijl@ulyssis.org> a =E9crit :
>> On Saturday 17 November 2007 17:03:51 nikita kozlov wrote:
>>> 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 =3D 30,
>>> si_errno =3D 0,
>>> si_code =3D 0,
>>> si_pid =3D 0,
>>> si_uid =3D 0,
>>> si_status =3D 0,
>>> si_addr =3D 0x2,
>>> si_value =3D {sigval_int =3D 0,sigval_ptr =3D 0x0},
>>> si_band =3D 0,
>>> __spare__ =3D {0, 0, 0, 0, 0, 0, 0}
>>> }
>>>
>>> anyone have an idea why my siginfo_t is empty please ?
>>
>> Well, it isn't empty. It's just that the si_pid field usually isn't
>> set. It probably should be, but either way, your code should work if
>> you send signals with sigqueue(2) instead of kill(2).
>=20
> Thank you for the reply,
> i have tried to use sigqueue but after a "undefined reference to
> `sigqueue'" compilation error i have opened signal.h and found this
> define :=20
>=20
> #if 0
> /*
>   * PR: 35924
>   * XXX we don't actually have these.  We set _POSIX_REALTIME_SIGNALS to=
=20
>   * -1 to show that we don't have them, but this symbol is not necessarily
>   * in scope (in the current implementation), so we can't use it here.
>   */
> int     sigqueue(__pid_t, int, const union sigval);
> #endif
>=20
> I'm working on FreeBSD 5.5-RELEASE-p14, do you have any idea ?

Hmm, looks like it has only been added in FreeBSD 7. If you can't
upgrade, you'll have to use some more advanced IPC mechanism I'm
afraid.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200711181556.30559.tijl>