🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Pasar estructura de datos dinámica a otro proceso

#1835
From: Carlos
Date: Sun, 31 Jul 2005 22:36
38 lines
2456 bytes
David Serrano (Hue-Bond) wrote:
> Buenas.
> 
> Tengo un programita en C con varias estructuras de datos, la mayoría son
> estáticas pero tengo un par de ellas que son dinámicas (que todavía no he
> implementado pero creo que haré con un array de estructuras). Quiero

¿Un array de punteros a estructuras?

> pasarlas todas a otro proceso mediante algún mecanismo de IPC como memoria
> compartida o sockets.
> 
> Con las estáticas es sencillo:
> 
> memcpy (puntero_a_memoria_compartida, &estruct, sizeof (estruct));
> 
> Mi problema es que no puedo hacer eso con un puntero (el que apunta a la
> estructura dinámica) porque el tercer parámetro sería sizeof(puntero) y
> entonces no copiaría mucho, que digamos. ¿Cómo puedo hacerlo?

memcpy(p_a_m_c, p, sizeof(*p))
o memcpy(p_a_m_c, p, sizeof(struct el_tipo))

> Además, el otro proceso debe saber cuántos miembros tiene el array, así que
> debo pasarle el número aparte como un int. Así, la memoria compartida
> quedaría de esta forma:
> 
> <datos estáticos><núm. de dinámicos><dinámico 1><dinámico 2>..<dinámico N>
> 
> Esto me parece un poco chapucilla... ¿hay alguna otra forma?

No sé por qué te parece chapucilla... es un protocolo tan bueno como 
cualquier otro. Lo chapucilla sería no mantener las funciones que leen y 
escriben en el mismo archivo para que no queden desincronizados los 
cambios, y esas cosas, pero como protocolo, si no se necesita más, ¿para 
qué hacerlo más complicado?

Saludos.
Technical Details
Message-ID: <dcjjbk$dp8$1@domitilla.aioe.org>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!news.newsland.it!ilaria.aioe.org!aioe.org!not-for-mail
References: <slrndeqj87.k49.responder_solo_en_el_grupo@genus.hue-bond.info>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,fbca0e4d84b66719
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,UTF8
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!news.newsland.it!ilaria.aioe.org!aioe.org!not-for-mail
From: Carlos <angus@quovadis.com.ar>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Pasar estructura de datos dinámica a otro proceso
Date: Mon, 01 Aug 2005 00:36:37 +0200
Organization: Aioe.org NNTP Server
Lines: 38
Message-ID: <dcjjbk$dp8$1@domitilla.aioe.org>
References: <slrndeqj87.k49.responder_solo_en_el_grupo@genus.hue-bond.info>
NNTP-Posting-Host: puq3HDGyMZXR3pxeUD5GuA.domitilla.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Complaints-To: abuse@aioe.org
NNTP-Posting-Date: Sun, 31 Jul 2005 22:29:08 +0000 (UTC)
User-Agent: Mozilla Thunderbird 0.8 (X11/20041012)