🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #13972

Servidor.Compartir una variable entre hijo y padre.

#13972
From: Josep Ramon
Date: Tue, 26 Dec 2000 18:52
47 lines
2406 bytes
Hola a todos.
estoy haciendo un programa servidor, y necesito compartir una variable entre el
padre y n proceso hijo. El programa tiene una pinta asĂ­:

   ...
main(){
   ...
shmget(...);      //Creo el segmento de memoria compartida
ptr=shmat(...);
shmctl(...);
   ...
socket(...);       //Creo el socket y demás cosas
bind(...);
   ...
i=1;
while(1){  //Bucle de servicio
   ...
  ptr[i]=accept(...); //Obtengo el descriptor de cada cliente
  ptr[0]=i;  //Tengo el nÂş de clientes conectados
  i++;
    ...
   fork(){
     ...
     shmget(...);
     ptr=shmat(...);
     shmctl(...);
     ...
     for(j=1;j<=ptr[0];j++)  //Un bucle porqué enviamos lo mismo a todos
        write(ptr[j],datos,strlen(datos));  //Escrivo los datos a enviar

     ...
   } //Final del fork
 ...
} Final del programa

El problema es que cuando me escribe en el hijo, solo manda datos al primer
cliente que se conecta, el cual tiene como descriptor = 4 (que le da el
accept()).
A los otros clientes que se conectan (con descriptores = {5,6,7,...}) no les
manda nada de nada. No sé si el problema es que se tiene que poner un semáforo.
Lo que pasa es que no sé como se hacen.
Bueno, haber si alguien sabe como solucionarlo y gracias.
Technical Details
Message-ID: <977855016.1208025462@news.teleline.es>
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!nntp.news.xara.net!xara.net!gxn.net!easynet-uk!easynet.net!news.rediris.es!newsfeed.mad.ttd.net!telenews.teleline.es!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,530151add8193e08,start
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2000-12-26 10:48:27 PST
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!nntp.news.xara.net!xara.net!gxn.net!easynet-uk!easynet.net!news.rediris.es!newsfeed.mad.ttd.net!telenews.teleline.es!not-for-mail
X-Newsreader: kexpress 0.8.0
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Message-ID: <977855016.1208025462@news.teleline.es>
Newsgroups: es.comp.os.linux.programacion
From: Josep Ramon <jrbenet@teleline.es>
Subject: Servidor.Compartir una variable entre hijo y padre.
Content-Transfer-Encoding: quoted-printable
Lines: 47
Date: Tue, 26 Dec 2000 18:52:35 GMT
NNTP-Posting-Host: 62.82.4.56
X-Complaints-To: newsmaster@company.com
X-Trace: telenews.teleline.es 977856755 62.82.4.56 (Tue, 26 Dec 2000 19:52:35 MET)
NNTP-Posting-Date: Tue, 26 Dec 2000 19:52:35 MET
Organization: Typhoon Authentication Testing Club