linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Question!
@ 2003-09-03 18:19 Mariano Moreyra
  2003-09-03 21:09 ` Question! Jorge Opaso Pazos
  2003-09-04 14:01 ` Question! Luciano Miguel Ferreira Rocha
  0 siblings, 2 replies; 13+ messages in thread
From: Mariano Moreyra @ 2003-09-03 18:19 UTC (permalink / raw)
  To: linux-c-programming

Hi!!
First...I'd like to know if there is any kind of digest on this list to see
old submited messages.

Now...I have a little problem.
I have a process that is listening for incoming connections on a socket.
That process waits for a command and then
forks a child to run a bash script.
The problems is:
	- When the bash script runs the safe_mysql script to run MySql engine, it's
like the child process never ends.
	  And because of that, the parent can't close the connection with the
client socket.
	- But if the bash script doesn't run the safe_mysql script...the child
process dies successfully and everything end
	  Ok

Sorry about my english, but I hope that I made my self clear....
Bye!


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-03 18:19 Question! Mariano Moreyra
@ 2003-09-03 21:09 ` Jorge Opaso Pazos
  2003-09-04 13:51   ` Question! Mariano Moreyra
  2003-09-04 14:01 ` Question! Luciano Miguel Ferreira Rocha
  1 sibling, 1 reply; 13+ messages in thread
From: Jorge Opaso Pazos @ 2003-09-03 21:09 UTC (permalink / raw)
  To: linux-c-programming

Mariano Moreyra wrote:
> Hi!!
> First...I'd like to know if there is any kind of digest on this list to see
> old submited messages.
> 
> Now...I have a little problem.
> I have a process that is listening for incoming connections on a socket.
> That process waits for a command and then
> forks a child to run a bash script.
> The problems is:
> 	- When the bash script runs the safe_mysql script to run MySql engine, it's
> like the child process never ends.
> 	  And because of that, the parent can't close the connection with the
> client socket.
> 	- But if the bash script doesn't run the safe_mysql script...the child
> process dies successfully and everything end
> 	  Ok
> 
> Sorry about my english, but I hope that I made my self clear....
> Bye!
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

envíame el script.

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: Question!
  2003-09-03 21:09 ` Question! Jorge Opaso Pazos
@ 2003-09-04 13:51   ` Mariano Moreyra
  2003-09-04 14:05     ` Question! Luciano Miguel Ferreira Rocha
  2003-09-04 16:04     ` Question! Jorge Opaso Pazos
  0 siblings, 2 replies; 13+ messages in thread
From: Mariano Moreyra @ 2003-09-04 13:51 UTC (permalink / raw)
  To: 'Jorge Opaso Pazos', linux-c-programming

Hola!
Te mando la seccion del programa que ejecuta el script en si.

Este proceso lo unico que espera del script es que el mismo conteste con un
"-" si hubo algun error o con un "+" si salio todo bien

----------------------------------------------------------
    if(err==0) {
      pipe_in = popen(shell_cmd,"r");
      fgets(response,5,pipe_in);

      if(response[0]=='-') {
        err=1;
      } else if(response[0]=='+') {
        err=0;
      };
      while(fgets(response,5,pipe_in)) {
      };
      pclose(pipe_in);
    };
-----------------------------------------------------------

El script lo unico que hace es copiar algunos archivos y luego leventar el
MySQL con el
safe_mysqld

Espero que esto sirva! Muchas gracias!!
Saludos!!



-----Mensaje original-----
De: linux-c-programming-owner@vger.kernel.org
[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Jorge
Opaso Pazos
Enviado el: Miércoles, 03 de Septiembre de 2003 18:09
Para: linux-c-programming@vger.kernel.org
Asunto: Re: Question!


Mariano Moreyra wrote:
> Hi!!
> First...I'd like to know if there is any kind of digest on this list to
see
> old submited messages.
>
> Now...I have a little problem.
> I have a process that is listening for incoming connections on a socket.
> That process waits for a command and then
> forks a child to run a bash script.
> The problems is:
> 	- When the bash script runs the safe_mysql script to run MySql engine,
it's
> like the child process never ends.
> 	  And because of that, the parent can't close the connection with the
> client socket.
> 	- But if the bash script doesn't run the safe_mysql script...the child
> process dies successfully and everything end
> 	  Ok
>
> Sorry about my english, but I hope that I made my self clear....
> Bye!
>
> -
> To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

envíame el script.

-
To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-03 18:19 Question! Mariano Moreyra
  2003-09-03 21:09 ` Question! Jorge Opaso Pazos
@ 2003-09-04 14:01 ` Luciano Miguel Ferreira Rocha
  2003-09-04 17:20   ` Question! Jorge Opaso Pazos
  1 sibling, 1 reply; 13+ messages in thread
From: Luciano Miguel Ferreira Rocha @ 2003-09-04 14:01 UTC (permalink / raw)
  To: mariano_moreyra; +Cc: linux-c-programming

On Wed, Sep 03, 2003 at 03:19:44PM -0300, Mariano Moreyra wrote:
> Hi!!
> First...I'd like to know if there is any kind of digest on this list to see
> old submited messages.
> 
> Now...I have a little problem.
> I have a process that is listening for incoming connections on a socket.
> That process waits for a command and then
> forks a child to run a bash script.
> The problems is:
> 	- When the bash script runs the safe_mysql script to run MySql engine, it's
> like the child process never ends.
> 	  And because of that, the parent can't close the connection with the
> client socket.
> 	- But if the bash script doesn't run the safe_mysql script...the child
> process dies successfully and everything end
> 	  Ok
> 
Hola,

Your problem should be the socket inherited by the child that will run
the script. I suppose the child doesn't need it, does it?

So, close it and redirect /dev/null to stdin, stdout and stderr:
if ((fork() == 0) { /* child */
	int fd;
	close(sock);
	fd = open("/dev/null", O_RDONLY);
	if (fd != 0) {
		dup2(fd, 0);
		close(fd);
	}
	fd = open("/dev/null", O_WRONLY);
	if (fd != 1) {
		dup2(fd, 1);
		close(fd);
	}
	fd = open("/dev/null", O_WRONLY);
	if (fd != 2) {
		dup2(fd, 2);
		close(fd);
	}
	execl("/usr/bin/safe_mysqld", "safe_mysqld", 0);
	_exit(1);
}

Regards,
Luciano Rocha

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-04 13:51   ` Question! Mariano Moreyra
@ 2003-09-04 14:05     ` Luciano Miguel Ferreira Rocha
  2003-09-04 14:28       ` Question! Mariano Moreyra
  2003-09-04 16:04     ` Question! Jorge Opaso Pazos
  1 sibling, 1 reply; 13+ messages in thread
From: Luciano Miguel Ferreira Rocha @ 2003-09-04 14:05 UTC (permalink / raw)
  To: mariano_moreyra; +Cc: 'Jorge Opaso Pazos', linux-c-programming

On Thu, Sep 04, 2003 at 10:51:19AM -0300, Mariano Moreyra wrote:
> Hola!
> Te mando la seccion del programa que ejecuta el script en si.
> 
> Este proceso lo unico que espera del script es que el mismo conteste con un
> "-" si hubo algun error o con un "+" si salio todo bien
> 
> ----------------------------------------------------------
>     if(err==0) {
>       pipe_in = popen(shell_cmd,"r");
>       fgets(response,5,pipe_in);
> 
>       if(response[0]=='-') {
>         err=1;
>       } else if(response[0]=='+') {
>         err=0;
>       };
>       while(fgets(response,5,pipe_in)) {
>       };
>       pclose(pipe_in);
>     };
> -----------------------------------------------------------
> 
> El script lo unico que hace es copiar algunos archivos y luego leventar el
> MySQL con el
> safe_mysqld
> 
> Espero que esto sirva! Muchas gracias!!
> Saludos!!

Please, this is an international list, so write in english.

Are you closing the socket before de popen(3)? Make sure you do and
that if this is a child to exit(2) after being done with the script.

Regards,
Luciano Rocha

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: Question!
  2003-09-04 14:05     ` Question! Luciano Miguel Ferreira Rocha
@ 2003-09-04 14:28       ` Mariano Moreyra
  0 siblings, 0 replies; 13+ messages in thread
From: Mariano Moreyra @ 2003-09-04 14:28 UTC (permalink / raw)
  To: 'Luciano Miguel Ferreira Rocha', mariano_moreyra
  Cc: 'Jorge Opaso Pazos', linux-c-programming

Ok!!! First of all, Sorry for writting in spanish!
I'm not closing the socket in the child process...so I'll try that and see
what happens.
Thanks a lot!!!
And sorry again!



-----Mensaje original-----
De: linux-c-programming-owner@vger.kernel.org
[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Luciano
Miguel Ferreira Rocha
Enviado el: Jueves, 04 de Septiembre de 2003 11:05
Para: mariano_moreyra@aca.org.ar
CC: 'Jorge Opaso Pazos'; linux-c-programming@vger.kernel.org
Asunto: Re: Question!


On Thu, Sep 04, 2003 at 10:51:19AM -0300, Mariano Moreyra wrote:
> Hola!
> Te mando la seccion del programa que ejecuta el script en si.
>
> Este proceso lo unico que espera del script es que el mismo conteste con
un
> "-" si hubo algun error o con un "+" si salio todo bien
>
> ----------------------------------------------------------
>     if(err==0) {
>       pipe_in = popen(shell_cmd,"r");
>       fgets(response,5,pipe_in);
>
>       if(response[0]=='-') {
>         err=1;
>       } else if(response[0]=='+') {
>         err=0;
>       };
>       while(fgets(response,5,pipe_in)) {
>       };
>       pclose(pipe_in);
>     };
> -----------------------------------------------------------
>
> El script lo unico que hace es copiar algunos archivos y luego leventar el
> MySQL con el
> safe_mysqld
>
> Espero que esto sirva! Muchas gracias!!
> Saludos!!

Please, this is an international list, so write in english.

Are you closing the socket before de popen(3)? Make sure you do and
that if this is a child to exit(2) after being done with the script.

Regards,
Luciano Rocha
-
To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-04 13:51   ` Question! Mariano Moreyra
  2003-09-04 14:05     ` Question! Luciano Miguel Ferreira Rocha
@ 2003-09-04 16:04     ` Jorge Opaso Pazos
  2003-09-04 17:53       ` Question! Luciano Miguel Ferreira Rocha
  1 sibling, 1 reply; 13+ messages in thread
From: Jorge Opaso Pazos @ 2003-09-04 16:04 UTC (permalink / raw)
  To: linux-c-programming

Mariano Moreyra wrote:
> Hola!
> Te mando la seccion del programa que ejecuta el script en si.
> 
> Este proceso lo unico que espera del script es que el mismo conteste con un
> "-" si hubo algun error o con un "+" si salio todo bien
> 
> ----------------------------------------------------------
>     if(err==0) {
>       pipe_in = popen(shell_cmd,"r");
>       fgets(response,5,pipe_in);
> 
>       if(response[0]=='-') {
>         err=1;
>       } else if(response[0]=='+') {
>         err=0;
>       };
>       while(fgets(response,5,pipe_in)) {
>       };
>       pclose(pipe_in);
>     };
> -----------------------------------------------------------
> 
> El script lo unico que hace es copiar algunos archivos y luego leventar el
> MySQL con el
> safe_mysqld
> 
> Espero que esto sirva! Muchas gracias!!
> Saludos!!
> 
> 
> 
> -----Mensaje original-----
> De: linux-c-programming-owner@vger.kernel.org
> [mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Jorge
> Opaso Pazos
> Enviado el: Miércoles, 03 de Septiembre de 2003 18:09
> Para: linux-c-programming@vger.kernel.org
> Asunto: Re: Question!
> 
> 
> Mariano Moreyra wrote:
> 
>>Hi!!
>>First...I'd like to know if there is any kind of digest on this list to
> 
> see
> 
>>old submited messages.
>>
>>Now...I have a little problem.
>>I have a process that is listening for incoming connections on a socket.
>>That process waits for a command and then
>>forks a child to run a bash script.
>>The problems is:
>>	- When the bash script runs the safe_mysql script to run MySql engine,
> 
> it's
> 
>>like the child process never ends.
>>	  And because of that, the parent can't close the connection with the
>>client socket.
>>	- But if the bash script doesn't run the safe_mysql script...the child
>>process dies successfully and everything end
>>	  Ok
>>
>>Sorry about my english, but I hope that I made my self clear....
>>Bye!
>>
>>-
>>To unsubscribe from this list: send the line "unsubscribe
> 
> linux-c-programming" in
> 
>>the body of a message to majordomo@vger.kernel.org
>>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
> 
> 
> envíame el script.
> 
> -
> To unsubscribe from this list: send the line "unsubscribe
> linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

English: I suspect that the problem is that safe_mysqld don't return 
until mysqld ends.
Try to execute safe_mysqld in background in the shellscript:

	if ! pgrep mysqld
	then
		/usr/bin/safe_mysqld &
	fi	
	
Castellano: El problema debe ser que no termina safe_mydqld hasta que no 
termina mysqld. Se podría solucionar llamando a safe_mysqld en 
"background" de la forma anterior.

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-04 14:01 ` Question! Luciano Miguel Ferreira Rocha
@ 2003-09-04 17:20   ` Jorge Opaso Pazos
  0 siblings, 0 replies; 13+ messages in thread
From: Jorge Opaso Pazos @ 2003-09-04 17:20 UTC (permalink / raw)
  To: linux-c-programming

Luciano Miguel Ferreira Rocha wrote:
> On Wed, Sep 03, 2003 at 03:19:44PM -0300, Mariano Moreyra wrote:
> 
>>Hi!!
>>First...I'd like to know if there is any kind of digest on this list to see
>>old submited messages.
>>
>>Now...I have a little problem.
>>I have a process that is listening for incoming connections on a socket.
>>That process waits for a command and then
>>forks a child to run a bash script.
>>The problems is:
>>	- When the bash script runs the safe_mysql script to run MySql engine, it's
>>like the child process never ends.
>>	  And because of that, the parent can't close the connection with the
>>client socket.
>>	- But if the bash script doesn't run the safe_mysql script...the child
>>process dies successfully and everything end
>>	  Ok
>>
> 
> Hola,
> 
> Your problem should be the socket inherited by the child that will run
> the script. I suppose the child doesn't need it, does it?
> 
> So, close it and redirect /dev/null to stdin, stdout and stderr:
> if ((fork() == 0) { /* child */
> 	int fd;
> 	close(sock);
> 	fd = open("/dev/null", O_RDONLY);
> 	if (fd != 0) {
> 		dup2(fd, 0);
> 		close(fd);
> 	}
> 	fd = open("/dev/null", O_WRONLY);
> 	if (fd != 1) {
> 		dup2(fd, 1);
> 		close(fd);
> 	}
> 	fd = open("/dev/null", O_WRONLY);
> 	if (fd != 2) {
> 		dup2(fd, 2);
> 		close(fd);
> 	}
> 	execl("/usr/bin/safe_mysqld", "safe_mysqld", 0);
> 	_exit(1);
> }
> 
> Regards,
> Luciano Rocha
> -
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
Hi, Luciano:
popen redirect the stdout of the child to the stream created if the call 
is in the form:

	FILE f = popen("cmd", "r");

Bye.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-04 16:04     ` Question! Jorge Opaso Pazos
@ 2003-09-04 17:53       ` Luciano Miguel Ferreira Rocha
  2003-09-04 18:41         ` Question! Mariano Moreyra
  0 siblings, 1 reply; 13+ messages in thread
From: Luciano Miguel Ferreira Rocha @ 2003-09-04 17:53 UTC (permalink / raw)
  To: Jorge Opaso Pazos; +Cc: linux-c-programming

On Thu, Sep 04, 2003 at 12:04:43PM -0400, Jorge Opaso Pazos wrote:
> Mariano Moreyra wrote:
> >Hola!
> >Te mando la seccion del programa que ejecuta el script en si.
> >
> >Este proceso lo unico que espera del script es que el mismo conteste con un
> >"-" si hubo algun error o con un "+" si salio todo bien
> >
> >----------------------------------------------------------
> >    if(err==0) {
> >      pipe_in = popen(shell_cmd,"r");
> >      fgets(response,5,pipe_in);
> >
> >      if(response[0]=='-') {
> >        err=1;
> >      } else if(response[0]=='+') {
> >        err=0;
> >      };
> >      while(fgets(response,5,pipe_in)) {
> >      };
> >      pclose(pipe_in);
> >    };
> >-----------------------------------------------------------
> >
> >El script lo unico que hace es copiar algunos archivos y luego leventar el
> >MySQL con el
> >safe_mysqld
> >
> >Espero que esto sirva! Muchas gracias!!
> >Saludos!!
> >
> >
> >
> >-----Mensaje original-----
> >De: linux-c-programming-owner@vger.kernel.org
> >[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Jorge
> >Opaso Pazos
> >Enviado el: Miércoles, 03 de Septiembre de 2003 18:09
> >Para: linux-c-programming@vger.kernel.org
> >Asunto: Re: Question!
> >
> >
> >Mariano Moreyra wrote:
> >
> >>Hi!!
> >>First...I'd like to know if there is any kind of digest on this list to
> >
> >see
> >
> >>old submited messages.
> >>
> >>Now...I have a little problem.
> >>I have a process that is listening for incoming connections on a socket.
> >>That process waits for a command and then
> >>forks a child to run a bash script.
> >>The problems is:
> >>	- When the bash script runs the safe_mysql script to run MySql 
> >>	engine,
> >
> >it's
> >
> >>like the child process never ends.
> >>	  And because of that, the parent can't close the connection with the
> >>client socket.
> >>	- But if the bash script doesn't run the safe_mysql script...the 
> >>	child
> >>process dies successfully and everything end
> >>	  Ok
> >>
> >>Sorry about my english, but I hope that I made my self clear....
> >>Bye!
> >>
> >>-
> >>To unsubscribe from this list: send the line "unsubscribe
> >
> >linux-c-programming" in
> >
> >>the body of a message to majordomo@vger.kernel.org
> >>More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >>
> >
> >
> >envíame el script.
> >
> >-
> >To unsubscribe from this list: send the line "unsubscribe
> >linux-c-programming" in
> >the body of a message to majordomo@vger.kernel.org
> >More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> 
> English: I suspect that the problem is that safe_mysqld don't return 
> until mysqld ends.
> Try to execute safe_mysqld in background in the shellscript:
> 
> 	if ! pgrep mysqld
> 	then
> 		/usr/bin/safe_mysqld &
> 	fi	
As the socket is inherited, the remote client will never exit.
If the popen is after a fork(), then it doesn't matter if safe_mysql doesn't
end, as the parent wouldn't be waiting on it.

My bet is in the socket not being closed, either in the parent, child, or
both, or before the execution of safe_mysql. (If mysqld inherits the socket,
then the connection won't close until mysqld does.)

> Castellano: El problema debe ser que no termina safe_mydqld hasta que no 
> termina mysqld. Se podría solucionar llamando a safe_mysqld en 
> "background" de la forma anterior.

Portugues: AH! that would be something :)

Regards,
Luciano Rocha
-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: Question!
  2003-09-04 17:53       ` Question! Luciano Miguel Ferreira Rocha
@ 2003-09-04 18:41         ` Mariano Moreyra
  2003-09-04 19:32           ` Question! Luciano Miguel Ferreira Rocha
  2003-09-05  4:16           ` Question! Jorge Opaso Pazos
  0 siblings, 2 replies; 13+ messages in thread
From: Mariano Moreyra @ 2003-09-04 18:41 UTC (permalink / raw)
  To: 'Luciano Miguel Ferreira Rocha',
	'Jorge Opaso Pazos'
  Cc: linux-c-programming

The problem is that the child is waiting for the script to finish (the one
that start mysqld) so the child sends a response to the client telling him
that the script finished ok (or not).
So, if I close the socket, the child can't send the response.
I tried to find a solution to this situation, but the client needs to know
the exit status of the script.
The parent process has his own socket listening for incoming connections and
forks the childs. These childs accepts the connections on his own sockets,
so  childs doesn't inherit the parent's socket.
It's ok to do that?? Or I'm doing something wrong with the sockets??
Thanks a lot to all of you for your answers!!

-----Mensaje original-----
De: linux-c-programming-owner@vger.kernel.org
[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Luciano
Miguel Ferreira Rocha
Enviado el: Jueves, 04 de Septiembre de 2003 14:54
Para: Jorge Opaso Pazos
CC: linux-c-programming@vger.kernel.org
Asunto: Re: Question!


On Thu, Sep 04, 2003 at 12:04:43PM -0400, Jorge Opaso Pazos wrote:
> Mariano Moreyra wrote:
> >Hola!
> >Te mando la seccion del programa que ejecuta el script en si.
> >
> >Este proceso lo unico que espera del script es que el mismo conteste con
un
> >"-" si hubo algun error o con un "+" si salio todo bien
> >
> >----------------------------------------------------------
> >    if(err==0) {
> >      pipe_in = popen(shell_cmd,"r");
> >      fgets(response,5,pipe_in);
> >
> >      if(response[0]=='-') {
> >        err=1;
> >      } else if(response[0]=='+') {
> >        err=0;
> >      };
> >      while(fgets(response,5,pipe_in)) {
> >      };
> >      pclose(pipe_in);
> >    };
> >-----------------------------------------------------------
> >
> >El script lo unico que hace es copiar algunos archivos y luego leventar
el
> >MySQL con el
> >safe_mysqld
> >
> >Espero que esto sirva! Muchas gracias!!
> >Saludos!!
> >
> >
> >
> >-----Mensaje original-----
> >De: linux-c-programming-owner@vger.kernel.org
> >[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Jorge
> >Opaso Pazos
> >Enviado el: Miércoles, 03 de Septiembre de 2003 18:09
> >Para: linux-c-programming@vger.kernel.org
> >Asunto: Re: Question!
> >
> >
> >Mariano Moreyra wrote:
> >
> >>Hi!!
> >>First...I'd like to know if there is any kind of digest on this list to
> >
> >see
> >
> >>old submited messages.
> >>
> >>Now...I have a little problem.
> >>I have a process that is listening for incoming connections on a socket.
> >>That process waits for a command and then
> >>forks a child to run a bash script.
> >>The problems is:
> >>	- When the bash script runs the safe_mysql script to run MySql
> >>	engine,
> >
> >it's
> >
> >>like the child process never ends.
> >>	  And because of that, the parent can't close the connection with the
> >>client socket.
> >>	- But if the bash script doesn't run the safe_mysql script...the
> >>	child
> >>process dies successfully and everything end
> >>	  Ok
> >>
> >>Sorry about my english, but I hope that I made my self clear....
> >>Bye!
> >>
> >>-
> >>To unsubscribe from this list: send the line "unsubscribe
> >
> >linux-c-programming" in
> >
> >>the body of a message to majordomo@vger.kernel.org
> >>More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >>
> >
> >
> >envíame el script.
> >
> >-
> >To unsubscribe from this list: send the line "unsubscribe
> >linux-c-programming" in
> >the body of a message to majordomo@vger.kernel.org
> >More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
>
> English: I suspect that the problem is that safe_mysqld don't return
> until mysqld ends.
> Try to execute safe_mysqld in background in the shellscript:
>
> 	if ! pgrep mysqld
> 	then
> 		/usr/bin/safe_mysqld &
> 	fi
As the socket is inherited, the remote client will never exit.
If the popen is after a fork(), then it doesn't matter if safe_mysql doesn't
end, as the parent wouldn't be waiting on it.

My bet is in the socket not being closed, either in the parent, child, or
both, or before the execution of safe_mysql. (If mysqld inherits the socket,
then the connection won't close until mysqld does.)

> Castellano: El problema debe ser que no termina safe_mydqld hasta que no
> termina mysqld. Se podría solucionar llamando a safe_mysqld en
> "background" de la forma anterior.

Portugues: AH! that would be something :)

Regards,
Luciano Rocha
-
To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-04 18:41         ` Question! Mariano Moreyra
@ 2003-09-04 19:32           ` Luciano Miguel Ferreira Rocha
  2003-09-05  4:16           ` Question! Jorge Opaso Pazos
  1 sibling, 0 replies; 13+ messages in thread
From: Luciano Miguel Ferreira Rocha @ 2003-09-04 19:32 UTC (permalink / raw)
  To: mariano_moreyra; +Cc: 'Jorge Opaso Pazos', linux-c-programming

On Thu, Sep 04, 2003 at 03:41:36PM -0300, Mariano Moreyra wrote:
> The problem is that the child is waiting for the script to finish (the one
> that start mysqld) so the child sends a response to the client telling him
> that the script finished ok (or not).

Well, I don't know what safe_mysqld script is that. The one on my system
doesn't end.

Check that yours do, by running it on a normal console.

If it does end, then I have the following questions: are you closing the
socket after the pclose and/or exiting the child?

If so, then I guess your problem lies with popen. popen doesn't close
the other file descriptors, so the socket gets inherited. To see if that's
the true cause, start mysql through your interface and do a lsof -c mysql.

If the socket connection shows up, then you have to change your popen,
either by implementing it with pipe(2), fork(2), dup2(2), close(2), exec*
and _exit(2). Or by forking another child to do the close(sock); popen, etc.,
and use the exit status of that child for indication of success or failure.

Regards,
Luciano Rocha

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Question!
  2003-09-04 18:41         ` Question! Mariano Moreyra
  2003-09-04 19:32           ` Question! Luciano Miguel Ferreira Rocha
@ 2003-09-05  4:16           ` Jorge Opaso Pazos
  2003-09-05 14:58             ` Question! Mariano Moreyra
  1 sibling, 1 reply; 13+ messages in thread
From: Jorge Opaso Pazos @ 2003-09-05  4:16 UTC (permalink / raw)
  To: linux-c-programming

Mariano Moreyra wrote:
> The problem is that the child is waiting for the script to finish (the one
> that start mysqld) so the child sends a response to the client telling him
> that the script finished ok (or not).
> So, if I close the socket, the child can't send the response.
> I tried to find a solution to this situation, but the client needs to know
> the exit status of the script.
> The parent process has his own socket listening for incoming connections and
> forks the childs. These childs accepts the connections on his own sockets,
> so  childs doesn't inherit the parent's socket.
> It's ok to do that?? Or I'm doing something wrong with the sockets??
> Thanks a lot to all of you for your answers!!
> 
> -----Mensaje original-----
> De: linux-c-programming-owner@vger.kernel.org
> [mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Luciano
> Miguel Ferreira Rocha
> Enviado el: Jueves, 04 de Septiembre de 2003 14:54
> Para: Jorge Opaso Pazos
> CC: linux-c-programming@vger.kernel.org
> Asunto: Re: Question!
> 
> 
> On Thu, Sep 04, 2003 at 12:04:43PM -0400, Jorge Opaso Pazos wrote:
> 
>>Mariano Moreyra wrote:
>>
>>>Hola!
>>>Te mando la seccion del programa que ejecuta el script en si.
>>>
>>>Este proceso lo unico que espera del script es que el mismo conteste con
> 
> un
> 
>>>"-" si hubo algun error o con un "+" si salio todo bien
>>>
>>>----------------------------------------------------------
>>>   if(err==0) {
>>>     pipe_in = popen(shell_cmd,"r");
>>>     fgets(response,5,pipe_in);
>>>
>>>     if(response[0]=='-') {
>>>       err=1;
>>>     } else if(response[0]=='+') {
>>>       err=0;
>>>     };
>>>     while(fgets(response,5,pipe_in)) {
>>>     };
>>>     pclose(pipe_in);
>>>   };
>>>-----------------------------------------------------------
>>>
>>>El script lo unico que hace es copiar algunos archivos y luego leventar
> 
> el
> 
>>>MySQL con el
>>>safe_mysqld
>>>
>>>Espero que esto sirva! Muchas gracias!!
>>>Saludos!!
>>>
>>>
>>>
>>>-----Mensaje original-----
>>>De: linux-c-programming-owner@vger.kernel.org
>>>[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Jorge
>>>Opaso Pazos
>>>Enviado el: Miércoles, 03 de Septiembre de 2003 18:09
>>>Para: linux-c-programming@vger.kernel.org
>>>Asunto: Re: Question!
>>>
>>>
>>>Mariano Moreyra wrote:
>>>
>>>
>>>>Hi!!
>>>>First...I'd like to know if there is any kind of digest on this list to
>>>
>>>see
>>>
>>>
>>>>old submited messages.
>>>>
>>>>Now...I have a little problem.
>>>>I have a process that is listening for incoming connections on a socket.
>>>>That process waits for a command and then
>>>>forks a child to run a bash script.
>>>>The problems is:
>>>>	- When the bash script runs the safe_mysql script to run MySql
>>>>	engine,
>>>
>>>it's
>>>
>>>
>>>>like the child process never ends.
>>>>	  And because of that, the parent can't close the connection with the
>>>>client socket.
>>>>	- But if the bash script doesn't run the safe_mysql script...the
>>>>	child
>>>>process dies successfully and everything end
>>>>	  Ok
>>>>
>>>>Sorry about my english, but I hope that I made my self clear....
>>>>Bye!
>>>>
>>>>-
>>>>To unsubscribe from this list: send the line "unsubscribe
>>>
>>>linux-c-programming" in
>>>
>>>
>>>>the body of a message to majordomo@vger.kernel.org
>>>>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>>
>>>
>>>
>>>envíame el script.
>>>
>>>-
>>>To unsubscribe from this list: send the line "unsubscribe
>>>linux-c-programming" in
>>>the body of a message to majordomo@vger.kernel.org
>>>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>
>>English: I suspect that the problem is that safe_mysqld don't return
>>until mysqld ends.
>>Try to execute safe_mysqld in background in the shellscript:
>>
>>	if ! pgrep mysqld
>>	then
>>		/usr/bin/safe_mysqld &
>>	fi
> 
> As the socket is inherited, the remote client will never exit.
> If the popen is after a fork(), then it doesn't matter if safe_mysql doesn't
> end, as the parent wouldn't be waiting on it.
> 
> My bet is in the socket not being closed, either in the parent, child, or
> both, or before the execution of safe_mysql. (If mysqld inherits the socket,
> then the connection won't close until mysqld does.)
> 
> 
>>Castellano: El problema debe ser que no termina safe_mydqld hasta que no
>>termina mysqld. Se podría solucionar llamando a safe_mysqld en
>>"background" de la forma anterior.
> 
> 
> Portugues: AH! that would be something :)
> 
> Regards,
> Luciano Rocha
> -
> To unsubscribe from this list: send the line "unsubscribe
> linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

Hi Mariano, hi Luciano.

When we make a concurrent server (a server that spawn a child process 
when accept return) always the parent have to close de socket returned 
by accept and the child have to close the socket that the server use to 
call accept (server socket).
I you have to inform the client about the exit status of the script, the 
better way (I think) is to execute the script in the child with 
system(3), because you need the exit status of the script, not the 
output. About the safe_mysqld, you must send it to bg.

Luciano, I've never heard the lsof command, thanks.

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: Question!
  2003-09-05  4:16           ` Question! Jorge Opaso Pazos
@ 2003-09-05 14:58             ` Mariano Moreyra
  0 siblings, 0 replies; 13+ messages in thread
From: Mariano Moreyra @ 2003-09-05 14:58 UTC (permalink / raw)
  To: 'Jorge Opaso Pazos', linux-c-programming

-----Mensaje original-----
De: linux-c-programming-owner@vger.kernel.org
[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Jorge
Opaso Pazos
Enviado el: Viernes, 05 de Septiembre de 2003 01:17
Para: linux-c-programming@vger.kernel.org
Asunto: Re: Question!


Mariano Moreyra wrote:
> The problem is that the child is waiting for the script to finish (the one
> that start mysqld) so the child sends a response to the client telling him
> that the script finished ok (or not).
> So, if I close the socket, the child can't send the response.
> I tried to find a solution to this situation, but the client needs to know
> the exit status of the script.
> The parent process has his own socket listening for incoming connections
and
> forks the childs. These childs accepts the connections on his own sockets,
> so  childs doesn't inherit the parent's socket.
> It's ok to do that?? Or I'm doing something wrong with the sockets??
> Thanks a lot to all of you for your answers!!
>
> -----Mensaje original-----
> De: linux-c-programming-owner@vger.kernel.org
> [mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Luciano
> Miguel Ferreira Rocha
> Enviado el: Jueves, 04 de Septiembre de 2003 14:54
> Para: Jorge Opaso Pazos
> CC: linux-c-programming@vger.kernel.org
> Asunto: Re: Question!
>
>
> On Thu, Sep 04, 2003 at 12:04:43PM -0400, Jorge Opaso Pazos wrote:
>
>>Mariano Moreyra wrote:
>>
>>>Hola!
>>>Te mando la seccion del programa que ejecuta el script en si.
>>>
>>>Este proceso lo unico que espera del script es que el mismo conteste con
>
> un
>
>>>"-" si hubo algun error o con un "+" si salio todo bien
>>>
>>>----------------------------------------------------------
>>>   if(err==0) {
>>>     pipe_in = popen(shell_cmd,"r");
>>>     fgets(response,5,pipe_in);
>>>
>>>     if(response[0]=='-') {
>>>       err=1;
>>>     } else if(response[0]=='+') {
>>>       err=0;
>>>     };
>>>     while(fgets(response,5,pipe_in)) {
>>>     };
>>>     pclose(pipe_in);
>>>   };
>>>-----------------------------------------------------------
>>>
>>>El script lo unico que hace es copiar algunos archivos y luego leventar
>
> el
>
>>>MySQL con el
>>>safe_mysqld
>>>
>>>Espero que esto sirva! Muchas gracias!!
>>>Saludos!!
>>>
>>>
>>>
>>>-----Mensaje original-----
>>>De: linux-c-programming-owner@vger.kernel.org
>>>[mailto:linux-c-programming-owner@vger.kernel.org]En nombre de Jorge
>>>Opaso Pazos
>>>Enviado el: Miércoles, 03 de Septiembre de 2003 18:09
>>>Para: linux-c-programming@vger.kernel.org
>>>Asunto: Re: Question!
>>>
>>>
>>>Mariano Moreyra wrote:
>>>
>>>
>>>>Hi!!
>>>>First...I'd like to know if there is any kind of digest on this list to
>>>
>>>see
>>>
>>>
>>>>old submited messages.
>>>>
>>>>Now...I have a little problem.
>>>>I have a process that is listening for incoming connections on a socket.
>>>>That process waits for a command and then
>>>>forks a child to run a bash script.
>>>>The problems is:
>>>>	- When the bash script runs the safe_mysql script to run MySql
>>>>	engine,
>>>
>>>it's
>>>
>>>
>>>>like the child process never ends.
>>>>	  And because of that, the parent can't close the connection with the
>>>>client socket.
>>>>	- But if the bash script doesn't run the safe_mysql script...the
>>>>	child
>>>>process dies successfully and everything end
>>>>	  Ok
>>>>
>>>>Sorry about my english, but I hope that I made my self clear....
>>>>Bye!
>>>>
>>>>-
>>>>To unsubscribe from this list: send the line "unsubscribe
>>>
>>>linux-c-programming" in
>>>
>>>
>>>>the body of a message to majordomo@vger.kernel.org
>>>>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>>
>>>
>>>
>>>envíame el script.
>>>
>>>-
>>>To unsubscribe from this list: send the line "unsubscribe
>>>linux-c-programming" in
>>>the body of a message to majordomo@vger.kernel.org
>>>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>
>>English: I suspect that the problem is that safe_mysqld don't return
>>until mysqld ends.
>>Try to execute safe_mysqld in background in the shellscript:
>>
>>	if ! pgrep mysqld
>>	then
>>		/usr/bin/safe_mysqld &
>>	fi
>
> As the socket is inherited, the remote client will never exit.
> If the popen is after a fork(), then it doesn't matter if safe_mysql
doesn't
> end, as the parent wouldn't be waiting on it.
>
> My bet is in the socket not being closed, either in the parent, child, or
> both, or before the execution of safe_mysql. (If mysqld inherits the
socket,
> then the connection won't close until mysqld does.)
>
>
>>Castellano: El problema debe ser que no termina safe_mydqld hasta que no
>>termina mysqld. Se podría solucionar llamando a safe_mysqld en
>>"background" de la forma anterior.
>
>
> Portugues: AH! that would be something :)
>
> Regards,
> Luciano Rocha
> -
> To unsubscribe from this list: send the line "unsubscribe
> linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> -
> To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

>Hi Mariano, hi Luciano.

>When we make a concurrent server (a server that spawn a child process
>when accept return) always the parent have to close de socket returned
>by accept and the child have to close the socket that the server use to
>call accept (server socket).

I have to check if I'm closing the sockets in the right way...

>I you have to inform the client about the exit status of the script, the
>better way (I think) is to execute the script in the child with
>system(3), because you need the exit status of the script, not the
>output.

I tried to execute the script with system, but I don't know why I didn't
recieve the right  exit status from the script. That's why i'm using popen
and getting the output.

> About the safe_mysqld, you must send it to bg.
The script is running safe_mysqld on bg, but that seems to be the problem.
Actually, if I'm connected to my linux box, via SecureCRT and run
safe_mysqld on background, when I exit from the console, with the exit
command or Ctrl-D, the SecureCRT connection never ends.
That's why I don't know if my problem really has a solution hehe  :)
But I'll keep trying all your recomendations to see what happens.
Thanks again!!

>Luciano, I've never heard the lsof command, thanks.
About lsof ... I don't know if it comes with all Linux distributions, but in
my case it does (Linux Redhat 7.2)

-
To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2003-09-05 14:58 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-09-03 18:19 Question! Mariano Moreyra
2003-09-03 21:09 ` Question! Jorge Opaso Pazos
2003-09-04 13:51   ` Question! Mariano Moreyra
2003-09-04 14:05     ` Question! Luciano Miguel Ferreira Rocha
2003-09-04 14:28       ` Question! Mariano Moreyra
2003-09-04 16:04     ` Question! Jorge Opaso Pazos
2003-09-04 17:53       ` Question! Luciano Miguel Ferreira Rocha
2003-09-04 18:41         ` Question! Mariano Moreyra
2003-09-04 19:32           ` Question! Luciano Miguel Ferreira Rocha
2003-09-05  4:16           ` Question! Jorge Opaso Pazos
2003-09-05 14:58             ` Question! Mariano Moreyra
2003-09-04 14:01 ` Question! Luciano Miguel Ferreira Rocha
2003-09-04 17:20   ` Question! Jorge Opaso Pazos

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).