|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Sep 2004
Messaggi: 6
|
[C (SO linux)]: SIGINT non ricevuta dai processi in background
slve a tutti
sto scrivendo in C un piccolo demone per linux. Questo programma, in quanto demone, lavora in background: il padre esegue una fork e termina subito lasciando lavorare il figlio. Io voglio che alla pressione di CTRL+C dalla shell il demone termini immediatamente. Purtroppo il segnale relativo alla CTRL+C (SIGINT) viene ricevuto solo dai processi in foreground....quindi il figlio non termina mai....non capisco perche' succeda questo... tramite la fork non si dovrebbero ereditare anche tutte le maschere relative ai segnali? grazie a tutti coloro che interverranno. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Re: [C (SO linux)]: SIGINT non ricevuta dai processi in background
Quote:
Puoi mandare direttamente il segnale con killall -INT <nome processo>. Occhio che così invii SIGINT a _tutti_ i processi con quel nome (quindi anche il padre o altre istanze del processo); se non è il comportamento che vuoi, usa kill -INT <pid del processo>.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Sep 2004
Messaggi: 6
|
ok
killall - INT <nome> funziona perfettamente come volevo che funzionasse la CTRL+C (quindi non ero io che sbagliavo a settare l'handler del segnale). grazie tante |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:36.