![]() | Pobierz cały dokument Rozmiar 62 KB |
4
Blokowanie sygna
Blokowanie sygna
ł
ł
ó
ó
w
w
• Przykład:
#include <signal.h>
main()
{
sigset_t set1;
sigfillset(&set1);
// ustaw blokad
ę
sigprocmask(SIG_SETMASK, &set1, NULL);
.
. Wykonanie krytycznego kodu
.
// usu
ń
blokad
ę
sigprocmask(SIG_UNBLOCK, &set1, NULL);
}
Wysy
Wysy
ł
ł
anie sygna
anie sygna
ł
ł
ó
ó
w
w
#include <signal.h>
static int alarm_fired = 0;
void alrm_bell(int sig)
{
alarm_fired = 1;
}
int main()
{
int pid;
// utworzenie drugiego procesu
if((pid = fork()) == 0) {
// to robi tylko proces potomny
sleep(5);
// wysłanie sygnału do procesu macierzystego
kill(getppid(), SIGALRM);
exit(0);
}
printf("czekam na alarm\n");
(void) signal(SIGALRM, alrm_bell);
pause();
if (alarm_fired)
printf("Dzy
ń
...Dzy
ń
!\n");
![]() | Pobierz cały dokument Rozmiar 62 KB |