[Pgsql-ayuda] Problemas con función en C

Magnvs -- Carles Querol magnvsctv@hotmail.com
Fri, 23 Jan 2004 17:50:57 +0000


Hola a todos,

He escrito una pequeña función en C que me permita ser invocada por un 
trigger para que, dadas unas ciertas condiciones, ejecute un programa. La 
idea básica es que el trigger llame a la función, la cual tiene dos 
parámetros, una para el nombre del archivo a ejecutar y otra para los 
parámetros para este ejecutable, como por ejemplo:

CridarExec ('/bin/touch','hola.txt')

lo cual llamará al programa touch para generar un archivo con el nombre 
hola.txt. El código de la función és el siguiente:

    1 #include "postgres.h"
    2 #include "fmgr.h"
    3 #include <unistd.h>
    4
    5 PG_FUNCTION_INFO_V1(CridarExec);
    6
    7
    8 Datum CridarExec (PG_FUNCTION_ARGS) {
    9         int retornat;
   10         char *path = PG_GETARG_TEXT_P(0);
   11         char *args = PG_GETARG_TEXT_P(1);
   12
   13         retornat = execve(path, &args, NULL);
   14
   15         PG_RETURN_INT32((int32)retornat);
   16 }

En principio está bien, se compila como un objeto compartido 
(CridarExec.so), la defino dentro de postgres correctamente (Function 
created) pero, no funciona, dándome un código de error de -1:

cridarexec
-----------
        -1
(1 row)

He comprovado que la función execve devuelve -1 cuando falla la ejecución 
del programa que se quiere ejecutar, pero en principio todo está bien...

Pueden echarme una mano?


gracias por adelantado.


Carles Querol
magnvsctv@hotmail.com
carquesa@eui.upv.es

Linux Registered User #299843

_________________________________________________________________
Una mejor experiencia en Internet. Prueba gratis dos meses MSN 8. 
http://join.msn.com/?pgmarket=es-es&XAPID=1577&DI=1055