Newsgroup: it.comp.lang.c
Titolo: [newbie] IPC [lunghetto]

Ola!,
	mi son studiato tutte le tecniche di IPC, purtroppo però, al momento di
metterle in pratica qualcosa non mi torna.
Devo realizzare un progettino del genere:
1. un padre crea n figli.
2. Ad ogni figlio invia una stringa.
3. Il figlio, ricevuta la stringa, la capovolge e la rimanda al padre
4. il padre colleziona _tutte_ le stringhe dei figli, le unisce e rimanda
una copia del risultato ad ogni figlio
5. il figlio nuovamente la ribalta e la rimanda al padre
A parte il fatto che si tratta di una "catena" infinita (ma questo non è un
problema visto che posso limitare la lunghezza della stringa a mio piacere,
quindi dopo X caratteri faccio terminare il tutto), pensavo di far
comunicare padre e figli con code di messaggi (nel mio caso ne avrei creata
una diversa per ogni figlio).
Non riesco però a capire bene come far in modo che il padre, una volta
spediti tutti i messaggi si metta in attesa dei figli (credo di non aver ben
chiaro la faccenda della wait(), mi sfugge qualcosa... Quando mi creo i
child, devo mettere una wait() per ogni child creato? ne basta una?).
Poi mi viene il dubbio che se metto un messaggio nella coda, non è che,
magari, se il child non viene schedulato, il processo padre, alla succesiva
msgget si rilegge il messaggio senza che questo sia passato dal figlio?
Qualcuno mi potrebbe chiarire un po' "stu fatto"?
Grazie
Magari se ci fosse anche un pezzettino di codice da vedere sarebbe meglio :P
-- 
(¯`·.¸_¸.·´¯`·.¸_¸.·´¯)
  byZ, doGmaI
  ICQ# 170836495
  Leafadar Aen
(_¸.·´¯`·.¸_¸.·´¯`·.¸_)

 Ola!,
[...]
Rincaro la dose :P
Ho tentato di scrivere qualcosa (riguardo al problema del padre che si
riprende i dati che ha spedito ho pensato di risolvere così, una coda di msg
associata ad ogni processo in cui il padre mette i dati da mandare a quel
processo, ed una coda associata al padre in cui tutti i processi child
mettono i dati che devono spedire al padre... è una buona soluzione?)
Dicevo, rincaro la dose...
Passando da vecchio DOS a Linux, c'è un errore che non mi era mai capitato
"variable-size type declared outside of any function" riguardo al seguente
pezzo di codice
typedef struct msg {
  long mtype;
  int msg_len;
  char msg_txt[MAX_LEN];
}
dove MAX_LEN è definita com int const MAX_LEN=200; (il tutto fuori dal main
e/o altre funzioni). Ma non dovrebbe essere una costante quella MAX_LEN?
Perchè dice variable-size?
RiGrazie


 Ola!,
OT warning! :)
Chiedi su it.comp.os.linux.development, il C standard dice poco o nulla 
su quello che chiedi tu.
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Linux registered user 299762 @ Linux registered machine 213003

 Perchč dice variable-size?
Perche' in realta', per il C, una variabile const e' pur sempre una 
variabile, che puo' essere forzata a cambiare valore; quindi:
const int a = 10;
*(int*)&a = 3;
printf("%d\n", a);
Stampa "3". Ergo, per il C stai dichiarando una struttura che puo' avere 
dimensioni variabili. In C++, invece, le cose si comporterebbero come ti 
aspetti.
Per riassumere: devi usare delle #define, per quello che vuoi fare tu. 
In sostanza, non si tratta di SO, ma di aderenza agli standard.


 su quello che chiedi tu.
OK
Grazie anche per l'altra risposta :D
