Gracias por las respuestas.<br><br>Comprobe que es algo que no tiene nada que ver con el hecho de que este usando sockets. Compile y ejecute el siguiente código:<br><br>#include <stdio.h><br><br>int main(void)<br>{<br>
    printf("Algo");<br>    while(1);<br>    return 0;<br>}<br><br>Y a diferencia de lo que yo esperaba (que el programa imprimiera la cadena Algo y luego se colgara), directamente se quedo colgado y no imprimio nada, es decir es como ustedes dicen, las salidas quedan almacenadas en un buffer y solo ante determinados eventos el contenido es mostrado en pantalla.<br>
<br>Los printf los había colocado en el programa a modo de flags para poder entender como se hiba ejecuntando el codigo del mismo, ya que tengo una duda respecto a este tema, pero para resolverla es mas claro enviar otro mensaje a la lista.<br>
<br>Saludos. <br><br><br><div class="gmail_quote">El 1 de junio de 2009 9:29, Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu">srd4121@njit.edu</a>></span> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hola Matías,<br>
<br>
Matias V. wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hola<br>
<br>
</blockquote>
<br>
[CORTE]<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
La ventana donde ejecute el programa servidor pasa a quedar asi:<br>
<br>
$ ./servidor<br>
f1f2f3f4f5f6server: got connection from 190.190.9.104<br>
f7 $<br>
<br>
<br>
Es decir aparece todo el texto.<br>
<br>
Lo que necesitaria conocer es alguna explicación tecnica de porque el<br>
texto de los printf no va apareciciendo a medida que se ejecuta el<br>
programa.<br>
<br>
</blockquote>
<br></div>
No es un problema de la función 'printf()', sino de 'stdout'. La salida estándar almacena completamente los datos a enviar. Cuando el almacenamiento (o "búfer") se llena al máximo, entonces automáticamente es enviado como un bloque. La otra forma de enviar la información es invocando 'fflush()', que ciertamente otras funciones realizan esta tarea automáticamente, como es cerrar un fichero o canal de salida.<br>

<br>
Sugiero invocar 'fflush()' para el canal de 'stdout' si quieres mantener cierta sincronización.<br>
<br>
También podrías cambiar el almacenamiento de 'stdout' a través de la función 'setvbuf()'. Por ejemplo,<br>
<br>
int main()<br>
{<br>
  setvbuf( stdout, 0, 0, _IONBF );<br>
  ...<br>
}<br>
<br>
De esta manera, indicamos que 'stdout' no será almacenado. Esto implica que cualquier dato enviado a la salida estándar será inmediatamente enviado. Eso sí, no te puedo garantizar si esto funcionará para 'stdout', al tratarse de un "fichero" especial.<br>

<br>
<br>
Espero que esto te ayude.<br>
<br>
Steven<br>
<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br>