Ya que la muchachada esta tan afilada hoy , ahi van dos consultitas
mas de un novato en Linux ...
(1) En todos los UNIX que conozco si uno hace un script asi;
snip>
#!sh
MIVARIABLE="ALGO"
export MIVARIABLE
<snap
Y uno ejecuta esto en una session al terminar la ejecucion encuentra
que las variable de entorno MIVARIABLE existe y continen "ALGO".
De que me perdi , que en Linux esto no sucede ?
(2) Si hay algun programador ahi afuera tal vez me puedar tirar un
cabo con esto.
Estoy programando un servidor de audio para Internet , pero tengo
algunos problemas bastante raros con los sockets.
Cuando el server se inicia lanza varios threads para atender las
funciones de audio , una cola de solicitudes asincronicas y el proceso
principal queda en bucle esperando conexiones de los clientes.
Para ello usa un file descriptor set donde monta dos sockets abiertos
, uno para aceptar conexiones TCP y otro para UDP.
El pool de socket es examido con un "select" (nonblocking) para
determinar si tengo alguna solicitud de conexion, si es asi la abre
conecta, intercambian los mensajes , etc , y todo vuelve a comenzar.
Hasta ahi , todo funciona bien , pero si el servicio pasa un
determinado tiempo inactivo (sin solicitudes) el programa sale con un
error indicando que los sockets usados para recibir conexiones , y que
estubieron abiertos por largo rato ya no son validos.
Lo rastree con el debug y el programa no los cierra en ningun momento
, pero cuando se produce el error sale del select con los sockets
cerrados en lugar de salir por TimeOut o IO de algun file descriptor
como deberia.
Esto no pasa en UNIX ni en OS2 , es mas el mismo programa compilado en
OS2 corre indefinidamente sin problemas .
La pregunta es , hay algo en el TCP de Linux que cierre sockets que
estuvieron inactivos durante un tiempo ?
De nuevo, cualquier info sera apreciada.
Gracias por anticipado y saludos,
Dario Fassi