SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: juanblack en Sábado 24 de Mayo de 2008, 19:49

Título: Comunicar Programas
Publicado por: juanblack en Sábado 24 de Mayo de 2008, 19:49
buenas , necesito su ayuda nuevamente.
el tema es sencillo , usando los comandos de  señales necesito comunicar 2 programas . ambos programas deben estar ejecutandose en ventanas diferentes.
y la idea es mandar una señal desde programa1 y programa2 recibir la señal y mandar un mensaje. esto en ambiente linux . ejecutado en terminales diferentes,.
lo q tengo claro es el recibo y manejo de señales , lo q no entiendo es como mandar desde el programa ese mensaje a ese programa2.
su funcion simple seria mandar una consulta simple onda :
programa1 hola estas ahi?..
programa2 responde: si aki toy.
Título: Re: Comunicar Programas
Publicado por: su - en Martes 27 de Mayo de 2008, 00:20
Busca por UNIX domain socket o podes leer sobre ICCC (http://www.tronche.com/gui/x/icccm/)  :)
Título: Re: Comunicar Programas
Publicado por: juanblack en Martes 27 de Mayo de 2008, 07:39
bueno encontre la solucion , para los q les interesa les paso el dato:
con el comando kill envias una señal previamente sabiendo el pid del programa
kill(pid,SIGUSR1);
Y con el comando signal recibes la señal
SIGNAL(SIGUSR1,mensaje);
cualkier duda con manejo de señales me avisan :D
salu2.-
Título: Re: Comunicar Programas
Publicado por: su - en Martes 27 de Mayo de 2008, 22:05
Cita de: "juanblack"
bueno encontre la solucion , para los q les interesa les paso el dato:
con el comando kill envias una señal previamente sabiendo el pid del programa
kill(pid,SIGUSR1);
Y con el comando signal recibes la señal
SIGNAL(SIGUSR1,mensaje);
cualkier duda con manejo de señales me avisan :D
salu2.-
Pesima solucion, kill no esta diseñado para eso.
Por favor, mira esto (http://en.wikipedia.org/wiki/Signal_%28computing%29#List_of_signals) y usa lo que ya te he comentado.
Título: Re: Comunicar Programas
Publicado por: juanblack en Viernes 30 de Mayo de 2008, 07:52
amigo la unica forma de enviar desde un programa una señal, por lo menos haci nos dijo el profesor es mediante el comando kill, el signal recibe la señal.
ya logre comunicar ambos programas y no tengo problemas :D
Título: Re: Comunicar Programas
Publicado por: su - en Viernes 30 de Mayo de 2008, 22:43
Cita de: "juanblack"
amigo la unica forma de enviar desde un programa una señal, por lo menos haci nos dijo el profesor es mediante el comando kill, el signal recibe la señal.
ya logre comunicar ambos programas y no tengo problemas :D
Ahora me vas a decir que syslog funciona via kill()... Ja!

UNIX Domain Socket (http://en.wikipedia.org/wiki/Unix_domain_socket) es la mejor forma para mandar mensajes de un programa a otro.
Otra forma (no tan buena) es usar standards input.

Kill solo manda flags (numeros) mas no mensajes y es muy mala idea cuando tienes que lidiar con estos flags (en demonios, por ejemplo)
Título: Re: Comunicar Programas
Publicado por: diego.martinez en Lunes 2 de Junio de 2008, 12:33
y por que no empleas un Buzon? o redireccionas las entradas?
 solo tienes que comunicarlos no?
Título: Re: Comunicar Programas
Publicado por: juanblack en Lunes 2 de Junio de 2008, 19:37
la idea es mandar señales no mensajes. y segun el tipo de señal hacer algun procedimiento , en base a eso digo q la funcion a usar es kill().
salu2.-
Título: Re: Comunicar Programas
Publicado por: Eternal Idol en Lunes 2 de Junio de 2008, 22:22
Y es kill efectivamente, en este enlace (que ya dejaron antes) esta explicado:
http://en.wikipedia.org/wiki/Signal_%28computing%29 (http://en.wikipedia.org/wiki/Signal_%28computing%29)
Título: Re: Comunicar Programas
Publicado por: su - en Lunes 2 de Junio de 2008, 22:58
Cita de: "juanblack"
la idea es mandar señales no mensajes. y segun el tipo de señal hacer algun procedimiento , en base a eso digo q la funcion a usar es kill().
salu2.-
Disculpa, entendi todo lo contrario...  :ouch: