[C con Clase] duda con write

Programante programante en gmail.com
Mar Jun 10 12:50:00 CEST 2008


xinul.vbp escribió:
> mmm, pues entonces es lo que suponía como me das solo una parte de tu programa,
> solo una función, deduzco que el resto de lo que tendrías que hacer lo has echo
> y bien, pero al parecer no, si write no llega a terminar y tu programa termina
> repentinamente, como write es una llamada del sistema, tu kernel debe estar 
> matando a tu programa por alguna razón, la mas lógica es que no has implementado
> bien la tubería, osea del otro lado no hay nadie escuchando, cuando pasa esto
> se recibe una SIGPIPE (On POSIX-compliant platforms, SIGPIPE is the signal 
> thrown when a computer program attempts to write to a pipe without a process 
> connected to the other end.), entendido? esto provoca esa terminación abrupta.
> cuando esto pasa write tendría que retornar un error code de EPIPE, lo cual 
> tendrías que verlo con el código que te puse.
> ya te he enviado un ejemplo básico de uso de tuberías sin nombre, allí podrás ver
> lo que te faltaba.
> otra cosa, tu función llamas a pipe, pero nunca forkeas y en el caso de
> que hallas forkeado antes no tienes que llamar mas a pipe.
>
> bueno creo que este es tu problema, ya no quedan otras opciones, la única era que
> no estabas implementando bien las tuberías, pero yo supuse que si lo habías echo.
>
>   
Claro. El problema está en que al no hacer fork, sólo hay un descriptor 
de lectura, que es precisamente el
que cierras en la línea anterior al write. Por lo tanto no se podrá leer 
lo que se escriba ahí, lo que hace que
al intentar el write tu programa reciba una señal SIGPIPE.





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