• Sábado 20 de Abril de 2024, 02:18

Autor Tema:  Sub Como Exec &&  (Leído 3463 veces)

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Sub Como Exec &&
« en: Jueves 27 de Octubre de 2005, 00:53 »
0
Hey Solocodiger@s, como hago un sub que pueda correr detras del programa, me explico:
He hecho un TCP server y quiero correr un cliente, pero el server tiene que correr primero, y por detras, mientras que el cliente corre como el programa, es lo que se ve, el cliente pero no el server.
Gracias....
 :hola:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Podwor

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #1 en: Jueves 27 de Octubre de 2005, 14:29 »
0
Buenas!
A ver si entiendo el problema, necesitas correr en simultaneo el server y el cliente?
Podrias hacer un programa con dos hilos. Uno el server y otro el cliente.
Es muy facil de hacer, si necesitas algun ejemplo avisame.

Saludos

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #2 en: Jueves 27 de Octubre de 2005, 21:15 »
0
:blink:
Hola Podwor, garcias por tu respuesta, pero creo que lo puedo hacer asi:
#codigo.....
system("exec server &");
sub clien {
  #Hacer halgo...
}
clien();
Aqui el server no es un sub, si no un programa aparte que es ejecutado por el sistema.
La idea era que se llamara al sub de server (server();) pero que este sub corriera por atras del programa dejando asi que el codigo sigiente corriera, sin tener que esperar a que terminara el sub server.
Un ejemplo
Código: Text
  1.  
  2. sub server {
  3.   print "Hola yo soy sub server\n";
  4. }
  5. sub client {
  6.   print "Hala yo soy sub client\n";
  7. }
  8. server();
  9. client();
  10.  

La idea es que al correr server(); no imprima nada y deje que client sea el que corra, pero al mismo tiempo sub server tiene que estar corriendo, sin que se note.
 :hola:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Podwor

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #3 en: Viernes 28 de Octubre de 2005, 00:48 »
0
Entiendo su -  
una pregunta  no se queda colgado haces el  system("exec server &") ??
Ese es tu problema?

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #4 en: Viernes 28 de Octubre de 2005, 01:58 »
0
No si estas en Unix, el "&" indica que lo correra en background, asi el resto del codigo no queda en un "Zombie" :)
 :hola:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Podwor

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #5 en: Viernes 28 de Octubre de 2005, 18:46 »
0
Si ya lo se  su -, de ahi me pregunta ya que a mi al dejarlo en background el sigue esperando algun tipo de retorno y se queeeeeda ahi.
Si vos lo solucionaste, cual es tu problema?

Saludos!!

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #6 en: Viernes 28 de Octubre de 2005, 21:26 »
0
Mira, yo lo que quiero hacer es un escript, 1 solo, un servidor y un cliente.
El problema es que: se llama a sub server, el server se queda en "Zombie" e impide que corra el resto del programa.
El sevidor (sub server) no tiene que ver nada con el resto del programa, bueno, solo que es del mismo escript, por lo tanto si se queda hay no inporta de amucho mientras que siga haciendo su tarea, pero el cliente, que es grafico tiene que correr, despues del server, Se hace con un fork.

Si nesecitas correr un sub y saver este cuando a finalizado haces esto:

Código: Text
  1.  
  2. defined(my $pid = fork);
  3. unless ($pid) {
  4.   exec "server";
  5.    die "Error: $!\n";
  6. }
  7. waitpid($pid, 0);
  8.  
  9.  
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Podwor

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #7 en: Sábado 29 de Octubre de 2005, 13:40 »
0
Entiendo tu problema,  cuando haces esto "exec server &" desde tu shell seguramente tienes que darle uno o dos enter para que el shell te responda nuevamente. Cosa que me pasa mi por lo que no puedo  hacer system("exec server &"); ya que se me queda como  "Zombie"  como tu has dicho.

Yo solucione el problema con dos hilos, el hilo secundario "para el servidor"  lo corri sin & o sea que tu harias system("exec server"); y el hilo principal seguiria el script de tu programa.

Saludos!

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Sub Como Exec &&
« Respuesta #8 en: Sábado 29 de Octubre de 2005, 16:38 »
0
Citar
Entiendo tu problema, cuando haces esto "exec server &" desde tu shell seguramente tienes que darle uno o dos enter para que el shell te responda nuevamente. Cosa que me pasa mi por lo que no puedo hacer system("exec server &"); ya que se me queda como "Zombie" como tu has dicho.
No, mira, el problema esta resuelto, lo hice con fork, pero con system("exec $programa &"), tambien se puede, el problema mio era que queria el server y el cliente en el mismo archivo.pl

Si quieres hacerlo con system("exec $exec &);" lo puedes hacer haci, y no se quedara en "Zombie".
 :smartass:
Código: Text
  1. #!/usr/bin/perl -w
  2. system("exec mozilla &");
  3. print "Funciono, el & hizo un fork y por eso puedo leer esto mientra que uso mozilla\n";
  4.  
  5.  
creo que el problema seria matar el exec
 :hola:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.