Pobierz cały dokument

Rozmiar 62 KB

IPC POSIX

background image

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

232/2849, 207/5553, 208/934, 87/6801, 153/2976, 104/8772, 734/6372, 715/8064, 714/8370, 1018/1073, 1007/5264, 1000/5395,
Kontakt | Polityka prywatności