Avatar billede jules_colding Nybegynder
24. august 2007 - 15:11 Der er 3 kommentarer

(LInux) Hvordan undgås ignorering af signaler ved system(2)

Hej,

Jeg har en simpel daemon, som kan genstarte sig selv hvis den modtager SIGUSR2. Dette går godt og efter planen. Problemet er, at efter at den har genstartet sig selv bliver alle signaler ignoreret.

Dvs at sende den endnu et SIGUSR2 signal ingen effekt har.

Desuden vil "kill <pid>" ikke virke. Kun en "kill -9" kan slå den ned.

Hvad er der i vejen og hvordan får jeg den til ikke at ignorere signaler efter at have sendt SIGUSR2?

Koden kan downloades her:

http://www.omesc.com/sites/default/files/downloads/brutus-keyring-0.9.5.tar.gz

Tak,
  jules
Avatar billede jules_colding Nybegynder
24. august 2007 - 15:46 #1
Jeg glemte at sige at brutus-keyring installeres ved:

./autogen.sh --prefix=/usr
make install

Der bliver automatisk bygget et selvforklarende test program (brutus-keyring-client) som kan bruges til at interface med dæmonen fra en shell.
Avatar billede jules_colding Nybegynder
24. august 2007 - 15:47 #2
Ups, jeg mente selvfølgelig:

./autogen.sh --prefix=/usr
make
make install
Avatar billede jules_colding Nybegynder
27. august 2007 - 11:28 #3
Flg i begyndelse af main() fixer problemet:

    sigset_t mask;
    sigfillset(&mask);
        pthread_sigmask(SIG_UNBLOCK, &mask, NULL);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester