[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