Quote:
Originariamente inviato da ilsensine
Esattamente, ma non necessariamente la loro somma è il tempo totale trascorso: questo perché il tempo totale viene ripartito tra i vari task.
Per me devi usare un array statico di strutture; ogni struttura deve avere il pid del processo (oppure 0 se è libera), e il tempo di inizio. Nel sighandler cerchi nell'array la struttura con il pid uguale a quello del processo che ha generato il segnale; quando ha finito, mette questo valore a 0 per liberarla per altri task. Mi sembra semplice, no?
|
Si ma questo implica comunque delle ricerche all'interno dell'array ogni volta che un processo figlio mi manda un SIGCHLD. Inoltre quando devo creare un nuovo processo (Quando faccio la fork() ) devo anche registrarlo all'interno dell'array andando a cercare la prima posizione libera. L'array, infatti, potrebbe avere dei "buchi" al proprio interno dovuti a processi che lanciati successivamente ad altri hanno terminato prima la loro esecuzione. Le prestazioni credo che ne risentano sensibilmente...
Tornando al discorso della sa_sigaction fare la somma tra lo user time consumed e il system time consumed non "restituisce" un risultato analogo a quello ottenuto facendo uso della gettimeofday() ?!?