Scusami per la risposta tardiva ma trovare tempo per il mio hobby è difficile.
Alla fine mi hai convinto . Ho usato la shared memory e adesso riesco a scambiare i 2 interi fra le 2 funzioni. Ovviamente i valori li ho inseriti in un array di interi.
#include <sys/ipc.h>
#include <sys/shm.h>
void movement(int *pos){
//codice che modifica i 2 interi ovvero pos[0] e pos[1].
}
int main(){
int memd;
int *pos;
memd=shmget(IPC_PRIVATE, sizeof(int)*2, SHM_R | SHM_W | IPC_CREAT | IPC_EXCL);
pos=(int *)shmat(memd, 0, SHM_R | SHM_W);
pos[0]=0; //stepper motor position
pos[1]=0; //sonar motor position
printf("VECCHIA Posizione motore stepper: %d\n",pos[0]);
printf("VECCHIA Posizione sonar: %d\n",pos[1]);
//... ...
movementchildpid=fork();
if(movementchildpid==0){
movement(pos);
}else{
wait(NULL);
printf("NUOVA Posizione motore stepper: %d\n",pos[0]);
printf("NUOVA Posizione sonar: %d\n",pos[1]);
}
}
Questo metodo di IPC non lo avevo mai applicato, adesso grazie a te so come utilizzarlo