[C con Clase] duda con write
xinul.vbp
xinul.vbp en gmail.com
Lun Jun 9 19:31:44 CEST 2008
On Mon, Jun 09, 2008 at 12:02:31PM -0300, Pogui wrote:
> Hola lista, tengo un problema que me esta rompiendo la cabeza.
> Resulta que al parecer la función write de este ejemplo hace que mi
> programa termine inesperadamente:
>
> #include <sys/types.h>
> #include <sys/stat.h>
> #include <sys/wait.h>
> #include <fcntl.h>
>
> #include <stdlib.h>
> #include <unistd.h>
> #include <stdio.h>
> #include <errno.h>
> #include <string.h>
>
> #include "hijos.h"
>
> int hijo(char* buffer, char caracter)
> {
> int *contador,pipea[2],i=0;
> *contador=0;
no se a que le estas asignando ya que no has reservado nada de memoria con malloc
> while(*buffer) {
> if(*buffer==caracter)
> i++;
> buffer++;
> }
> *contador=i;
> printf("%d\n%d\n",*contador,i);
acá tendrías que recivír un segment fault.
>
> if(caracter == 'a') {
> printf("es una 'a'\n");
> if (pipe(pipea) == -1) {
> perror ("pipe");
> exit (EXIT_FAILURE);
> }
> /*envio de mensaje */
> close (pipea[0]);
> //write (pipea[1], contador, sizeof(contador)); esta es la
> linea del problema
pues como ya dije a _contador_ no le has asignado nada de memoria
>
> printf("luego de escribir\n");
> close (pipea[1]);
> /*fin de envio de mensaje */
> }
>
> return *contador;
> }
>
> lo raro es que compila perfectamente.
> Alguna idea de que es lo que puede estar pasando?
> Apenas el programa entra al write sobre el pipe, la ajecucuión termina
> abruptamente
termina con algún error, cual?
> :(
> gracias por su atención.
prueba reservando memoria para _contador_ con malloc.
--
|_|0|_|
|_|_|0|
|0|0|0|
Solo el conocimiento te hace libre.
Más información sobre la lista de distribución Cconclase