Ciao a tutti, vi spiego qual'è il mio problema.
Ho una funzione che deve processare dei dati rispettando dei vincoli di tempo. Supponiamo che il tempo a sua disposizione sia di 10 msec. Entro tale tempo la funzione deve ritornare il risultato prodotto (anche se incompleto, la cosa fondamentale è il rispetto del vincolo temporale).
L' idea è quella di settare un timer a 10 msec, attraverso la funzione ualarm, prima di invocare la mia funzione. Allo scadere del timer il processo riceverà il segnale SIGALRM che indicherà la fine del tempo a disposizione per l'esecuzione della funzione.
Il problema è che dopo aver gestito il segnale, attraverso la funzione signal o sigaction, il programma ritorna ad eseguire dal punto in cui era stato interrotto, cioè la funzione ritornerà ad essere eseguita fino alla sua conclusione ignorando il vincolo temporale.
Per farvi capire meglio, quello che voglio ottenere è un comportamento simile a quello che ha la funzione select alla ricezione di un segnale, essa ritorna -1 e setta la variabile globale errno a EINTR indicante che la funzione è stata interrota da un segnale.
Conoscete un modo per rendere la funzione interrompibile dall'esterno al verificarsi di un evento?(nel mio caso la ricezione del segnale SIGALRM).
Qualsiasi idea, suggerimento o spunto di discussione è ben accetto.
Ringrazio tutti in anticipo.
njno
P.S. Sistema operativo Debian.