[Pgsql-ayuda] Llamada a programas externos desde postgres

From: "Magnvs -- Carles Querol" <magnvsctv(at)hotmail(dot)com>
To: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: [Pgsql-ayuda] Llamada a programas externos desde postgres
Date: 2004-01-26 18:52:22
Message-ID: Law12-F120x33E1ioWw00000129@hotmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos,

Me he pasado la última semana rompiéndome la cabeza para escribir una
función en C que llame a un procedimiento externo para poder generar
documentos XML, pero no hay forma de que funcione. Así, que si alguno sabe
si postgres ya tiene implementada una función de este tipo, por favor que me
lo haga saber. Os pego el código de la función que he escrito yo, por si
alguno de vosotros puede decirme donde falla (cuando la llamo con, por
ejemplo, select CridarExec('/usr/bin/perl','-V'), me devuelve el valor "2",
que según errno, significa que no tengo permisos para ejecutar el programa
invocado):

1 #include <stdio.h>
2 #include <errno.h>
3 #include "postgres.h"
4 #include "fmgr.h"
5 #include <unistd.h>
6 #include <string.h>
7 #include <errno.h>
8
9
10 PG_FUNCTION_INFO_V1(CridarExec);
11
12
13 Datum
14 CridarExec (PG_FUNCTION_ARGS) {
15 int retornat;
16
17 text * path = PG_GETARG_TEXT_P(0);
18 text * args = PG_GETARG_TEXT_P(1);
19
20 size_t filename_len = VARSIZE(path)-VARHDRSZ;
21 size_t arguments_len = VARSIZE(args)-VARHDRSZ;
22
23 char *filename;
24 char *arguments;
25
26 filename = (char *)palloc(filename_len);
27 arguments = (char *)palloc(arguments_len);
28
29 memcpy (filename, VARDATA(path), filename_len);
30 memcpy (arguments, VARDATA(args), arguments_len);
31
32 filename[filename_len] = '\0';
33 arguments[arguments_len]= '\0';
34
35 retornat = execl(filename, arguments, NULL);
36
37 pfree(filename);
38 pfree(arguments);
39
40 PG_RETURN_INT32((int32)errno);
41 }
42

Gracias a todos.

PD. Lo que paso como parámetros és el nombre del archivo y la opciones. La
idea es pasar como archivo ejecutable un módulo PHP y como parámetro, un
código a partir del cual se genera el documento XML.

Carles Querol
magnvsctv(at)hotmail(dot)com
carquesa(at)eui(dot)upv(dot)es

Linux Registered User #299843

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger.
http://messenger.microsoft.com/es

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martín Marqués 2004-01-26 19:27:31 Re: [Pgsql-ayuda] Llamada a programas externos desde postgres
Previous Message Alvaro Herrera 2004-01-25 14:13:44 Re: [Pgsql-ayuda] Uso de matrices [] de tipos definidos por el usuario.