Article View: es.comp.os.linux.programacion
Article #1836Re: Pasar estructura de datos din�mica a otro proceso
From: Oscar Garcia
Date: Sun, 31 Jul 2005 22:32
Date: Sun, 31 Jul 2005 22:32
53 lines
3554 bytes
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-mailReferences:
<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