* 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-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 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
* 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 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
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).