[Pgsql-ayuda] Como terminar un proceso

Antonio Castro acastro@ciberdroide.com
Tue, 11 Nov 2003 15:07:43 +0100 (CET)


On Thu, 6 Nov 2003, Carmen Gloria Sepulveda Dedes wrote:

> Hola.
>
> Tengo un programa en C y dentro de este, una llamada a una funcion.
> Cuando la ejecucion del programa se demora demasiado, debo terminarla
> con ctrl-C.
>
> Por otro lado, al consultar como super-usuario la vista
> pg_stat_activity, me dice que la funcion que se llamaba en el programa
> que acabo de terminar, sigue corriendo (me doy cuenta por lo que dice en
> el campo "current_query").
>
> Lo que hice fue matar el proceso con "kill -9", pero sucedio que perdi
> todas las otras conexiones que tenia en la bd en ese momento (via psql),
> que me dieron el siguiente error:


Evidentemente con kill -9 el programa terminar=E1 de mala manera
porque es una interrupcion no enmascarable.

Con atexit(3) cualquier otra finalizaci=F3n del programa ser=E1
convenientemente procesada.


=09/************/
=09EndSesion(){
=09void EndSesion(){
=09  /* Si el programa termina cerrar conexion con BD */
=09  PQfinish (conn);
=09  ....
=09  /* (Por ejemplo cerrar ncurses o lo que haga falta */
=09  printf("\n\nFin del programa ....etc,etc.\n\n"
=09}

=09/********** MAIN *********/
=09main(){
=09...
=09/* Abrir conexi=F3n */
=09conn =3D PQsetdb (pghost, pgport, pgoptions, pgtty, dbName);
=09atexit (EndSesion);
=09....
=09}



--=20
Un saludo
Antonio Castro

       /\     /\   Ciberdroide Inform=E1tica
         \\W//  << http://www.ciberdroide.com >>
        _|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . acastro@ciberdroide.com   |
+()()()---------()()()--------------------+