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