Originariamente inviato da YuYevon
Non capisco il termine "tramite"... una pipe non serve a "far convidivere un segmento di memoria tra 2 processi", ma semplicemente a metterli in comunicazione... è un meccanismo di IPC, non c'entra con la memoria condivisa.



Se questo è quello che devi fare, non c'è bisogno di ricorrere alla memoria condivisa. Il processo padre deve aprire entrambe le estremità della pipe (lettura e scrittura) richiamando appunto pipe(), a quel punto crea il processo figlio che eredita entrambi i descrittori associati alle due estremità della pipe. Fatto questo, poiché il processo figlio deve leggerci, chiude l'estremita in scrittura, legge i dati (in questo caso i numeri della successione di Fibonacci) e li stampa. Il processo padre, invece, chiude l'estremità della pipe in lettura (perché lui invece deve scriverci) e appunto scrive nella pipe i numeri della successione di Fibonacci, che saranno letti e stampati dal processo figlio.


il mio consiglio e di correggere questi warnings prima di procedere... si tratta principalmente di rivedere come hai dichiarato le variabili che passi alle funzioni (tanto per dirne una, "buffer" nel tuo caso deve essere un array di 30 elementi se vuoi passarlo alla write... o comunque in generale un puntatore).

Se hai problemi, chiedi pure
Ciao YuYevon grazie per la tua spiegazione, si effettivamente mi ero confuso nel fatto di "far condividere la memoria tramite una pipe" , anche se gia lo sapevo, effettivamente la mia tecnica nell'esercizio era un po sbagliata.. Ti ringrazio moltissimo, comunque si, l'esercizio richiedeva una condivisione di memoria, magari chissa non era il caso di utilizzare la api POSIX pero va bene lo stesso, sono contento di tutti i consigli. Ancora grazie