Funkcja pause()
blokuje się, dopóki nie nadejdzie sygnał. Zakładając, że proces otrzymał sygnał i wstrzymano(), czy procedura obsługi sygnału zostanie wykonana przed kodu następującego po wywołaniu , czy wynik jest nieoczekiwany?obsługa sygnału pauzy()
Przykład:
void sigusr1_handler()
{
// .. handler code
}
void main()
{
// .. bind handler to SIGUSR1
pause(); // wait for SIGUSR1
// some more code
}
znaczy „trochę więcej kodu” będzie zawsze wykonywany posigusr1_handler()
zakończyła, czy tam jest sytuacja wyścigu? Jeśli tak, jakie jest rozwiązanie?
nie mogę myśleć o niczym oprócz zajętości czekania, ale potem przerwa nie będzie w ogóle potrzebne ..
"lub wynik jest nieoczekiwany" - Skąd mamy wiedzieć, czego się spodziewać? – Olaf