Bonjour j'ai fait un petit programme pour m’entraîner au fork()
En fait c'est une fonction 'nouveau_programme' qui prend en paramètre une fonction (qui change l'état d'une variable) et crée un processus pour la fonction passé en paramètre, la voici :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| //crée un processus pour un nouveau programme
int v2_nouveau_programme(void (*nouv_prog)()){
pid_t processus;
processus = fork();
if (processus == -1) { // erreur
printf("erreur dans la creation du processus");
return 0;
}
else if (processus == 0) { //processus fils
nbr_simultane++;
printf("processus fils de pid %d et de pére%d\n",getpid(), getppid());
nouv_prog();
return 4;
}
} |
et j'ai une fonction par exemple, 'rotate_bras_gauche'
1 2 3 4
|
void rotate_bras_gauche(int a){
bras_gauche = a;
} |
Donc pour exécuter la fonction ci dessus dans un nouveau processus, je fais :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
int bras_gauche =0;
void mon_programme_1()
{
rotate_bras_gauche(90);
}
//crée un processus pour la rotation du bras
int main(){
v2_nouveau_programme(mon_programme_1);
sleep(5);
printf("valeur de bras_gauche :%d\n", bras_gauche);
return 0;
} |
Mon soucis est que après l’exécution de 'v2_nouveau_programme(mon_programme_1)' ma variable bras_gauche à bien changé de valeur ! elle est a 90, alors que je fait la modification dans un nouveau processus !
Partager