🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#1836
From: Oscar Garcia
Date: Sun, 31 Jul 2005 22:32
53 lines
3554 bytes
El Sun, 31 Jul 2005 22:13:28 +0000 (UTC), "David Serrano (Hue-Bond)"
<responder_solo_en_el_grupo@yahoo.es> escribi�:
>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?

Lo ideal es que envies directamente la direcci�n a donde apunta tu
puntero y la longitud de la estructura. De este modo enviar�s los
datos reales y no el puntero.

>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?

Si has estudiado la torre de protocolos ISO de OSI ver�s que est�
definido en la capa de presentaci�n (nivel 6).

�Qu� lenguaje de programaci�n usas? Presupongo que C por el memcpy que
haces.

En ese caso te recomiendo que te crees un modelo de datos abstracto
que sea consistente y que se acomode a tus necesidades.

Por ejemplo.

Si usas un modelo basado en listas enlazadas para obtener el n�mero de
elementos debes recorrer toda la lista hasta que llegues al �ltimo
eslab�n de la cadena y te diga "ya no quedan m�s datos" (casi siempre
marcado por un puntero al siguiente elemento NULL).

Cuando ese valor es necesario que se conozca muchas veces y ante gran
cantidad de datos entonces quiz� debieras crearte dos tipos de datos,
un "contenedor" de la lista en el que se almacena la cantidad de
elementos de la misma y que se actualiza en cada operaci�n de borrado
o inserci�n, y por otro lado el tipo de datos que contendr� realmente
la informaci�n (generalmente en forma de lista enlazada). El
"contenedor" deber�a apuntar al primer elemento de la lista.

A la hora de enviar los datos a trav�s de un socket entonces debes
plantearte un protocolo de nivel 6 que encapsule tus datos y que los
convierta en "multiplataforma" (conversi�n de las cadenas de
caracteres a UTF-8 por ejemplo, bits en datos enteros en orden de red,
etc) aparte de marcar el comienzo de una estructura, su tama�o y
contenido, marcas de inicio y final de volcados de datos, etc...

Un saludo.

-- 
�scar Javier Garc�a Baudet
LinaresDigital
http://redstar.linaresdigital.com/
Technical Details
Message-ID: <bnjqe11hokc9n6kehgbv2u9o7bh3m5j7sf@4ax.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.glorb.com!news.antakira.com!cagarruta.escomposlinux.org!appleseed.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.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,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.glorb.com!news.antakira.com!cagarruta.escomposlinux.org!appleseed.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mail
From: Oscar Garcia <redstarQUITARSPAM23@terra.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Pasar estructura de datos din�mica a otro proceso
Date: Mon, 01 Aug 2005 00:32:40 +0200
Organization: Ecolnet
Lines: 53
Message-ID: <bnjqe11hokc9n6kehgbv2u9o7bh3m5j7sf@4ax.com>
References: <slrndeqj87.k49.responder_solo_en_el_grupo@genus.hue-bond.info>
NNTP-Posting-Host: 62-15-84-165.inversas.jazztel.es
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: cormoran.emeteo.local 1122849156 25287 62.15.84.165 (31 Jul 2005 22:32:36 GMT)
X-Complaints-To: emeteo@escomposlinux.org
NNTP-Posting-Date: Sun, 31 Jul 2005 22:32:36 +0000 (UTC)
X-Newsreader: Forte Free Agent 2.0/32.652