[C con Clase] duda con write

Pogui poguijuaz en gmail.com
Lun Jun 9 22:33:18 CEST 2008


xinul.vbp escribió:
> 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
>
>   
Hola gracias por responder.
La salida de:
 $-: echo $?
Me dice :
"141"
Ni idea que puede ser la salida 141........






Más información sobre la lista de distribución Cconclase