|
Spr1gg4N |
.illuminato.
Registered: Sep 2007
Posts: 162 (0.03 al dì)
Location:
Corso:
Anno:
Time Online: 1 Day, 18:40:54 [...]
Status: Offline
Edit | Report | IP: Logged |
sched.h: questa sconosciuta
Ciao a tutti, stavo guardando i sorgenti della lezione 4 e più precisamente il seguente:
code: #include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sched.h>
int run(void* s)
{
int* shared = (int*)s; /* alias per comodita` */
while (shared[0] < 10) {
sleep(1);
printf("Processo figlio (%d). s = %d\n",
getpid(), shared[0]);
if (!(shared[0] < 10)){
printf("Corsa critica!!!!\n");
abort();
}
shared[0] += 1;
}
return 0;
}
int main(void){
int shared[2] = {0 , 0};
/* int clone(int (*fn)(void *),
* void *child_stack,
* int flags,
* void *arg);
* crea una copia del chiamante (con le caratteristiche
* specificate da flags) e lo esegue partendo da fn */
if (clone(run, /* il nuovo
* processo esegue run(shared), vedi quarto
* parametro */
malloc(4096)+4096, /* lo stack del nuovo processo
* (cresce verso il basso!) */
SIGCHLD, /* in questo caso la clone e` analoga alla fork */
shared) < 0){
perror("Errore nella creazione");
exit(1);
}
if (clone(run, malloc(4096)+4096, SIGCHLD, shared) < 0){
perror("Errore nella creazione");
exit(1);
}
/* Isolati: ciascuno dei figli esegue 10 volte. Per il padre
* shared[0] e` sempre 0 */
while(1) {
sleep(1);
printf("Processo padre. s = %d\n", shared[0]);
}
return 0;
}
ma quanto vado a compilare ecco cosa mi risulta:
code:
cc -o thread-isolated thread-isolated.c
"thread-isolated.c", line 9: cannot open include file "sched.h"
a parte che non ho idea a cosa serva quella libreria, da dove posso scaricarla? a quanto pare in un'installazione "standard" di minix la sched.h non è inclusa
P.S.
Certo che il prof potrebbe inserire qualche spiegazione ai sorgenti sul sito eh?
Grazie in anticipo per le risposte ^^
|