SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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.
-
Busca por UNIX domain socket o podes leer sobre ICCC (http://www.tronche.com/gui/x/icccm/) :)
-
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.-
-
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.
-
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
-
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)
-
y por que no empleas un Buzon? o redireccionas las entradas?
solo tienes que comunicarlos no?
-
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.-
-
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)
-
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: