• Jueves 28 de Marzo de 2024, 21:46

Autor Tema:  Comunicar Programas  (Leído 2063 veces)

juanblack

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Comunicar Programas
« en: Sábado 24 de Mayo de 2008, 19:49 »
0
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.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #1 en: Martes 27 de Mayo de 2008, 00:20 »
0
Busca por UNIX domain socket o podes leer sobre ICCC  :)
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

juanblack

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #2 en: Martes 27 de Mayo de 2008, 07:39 »
0
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.-

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #3 en: Martes 27 de Mayo de 2008, 22:05 »
0
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 y usa lo que ya te he comentado.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

juanblack

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #4 en: Viernes 30 de Mayo de 2008, 07:52 »
0
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

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #5 en: Viernes 30 de Mayo de 2008, 22:43 »
0
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 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)
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #6 en: Lunes 2 de Junio de 2008, 12:33 »
0
y por que no empleas un Buzon? o redireccionas las entradas?
 solo tienes que comunicarlos no?

juanblack

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #7 en: Lunes 2 de Junio de 2008, 19:37 »
0
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.-

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #8 en: Lunes 2 de Junio de 2008, 22:22 »
0
Y es kill efectivamente, en este enlace (que ya dejaron antes) esta explicado:
http://en.wikipedia.org/wiki/Signal_%28computing%29

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Comunicar Programas
« Respuesta #9 en: Lunes 2 de Junio de 2008, 22:58 »
0
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:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.