signal(): je glibc funkcni, nebo neumim programovat?

Miroslav Stibor smsti na hp832.fce.vutbr.cz
Čtvrtek Listopad 25 17:05:00 CET 1999


Zdar lidi,

provozuju slack 3.6 a 4.0 s libc, tam mi program chodi ok:

------------------------------------------------------------------------------
#include <signal.h>
#include <stdio.h>

void druhy(int sig)
{
        signal(SIGUSR2, druhy);
        printf("Druhy a ostatni\n");
}

void prvni(int sig)
{
        signal(SIGUSR2, druhy);
        printf("Prvni kill\n");
        scanf ("%i", &sig);	/* treba scanf */
}

int main()
{
        signal(SIGUSR2, prvni);
        while (1) { };
        return;
}
------------------------------------------------------------------------------

Tento program (zjednoduseny pro nazornost) pri killovani -SIGUSR2 na libc 
chodi podle meho ocekavani:

$ ./a.out
Prvni kill
Druhy a ostatni
Druhy a ostatni		... atd.

Po prelozeni na glibc jen toto:
$ ./a.out
Prvni kill	... a vic nic, tvari se to jako pri nastaveni na SIG_IGN 
			a nehnu s tim

Mam to reklamovat u vyrobce glibc :), nebo mi poradite co s tim?



Další informace o konferenci Linux