[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