[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