[bcn-pm] Pregunta sobre open2
Alex Muntada
alexm at ac.upc.es
Fri Apr 23 05:06:32 CDT 2004
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
* Xavi Planas: [2004-04-23/10:40:22 +0200]
> - El server manager és un procés de tipus shell
> programat amb C y desde el que es gestionen
> característiques adm d'una aplicació.
En tens el codi? Tens la possibilitat de modificar-lo o
de reescriure'l en Perl? La idea seria convertir aquest
procés en un daemon que pugui atendre diverses peticions
alhora, un cop carregat a memòria. El mòdul Net::Daemon
és collonut per a fer-ho.
> - El temps d'espera es produeix únicament a l'arrancar
> el programa (5-10s) tot i que no fa un ús intensiu
> dels recursos de màquina.
En aquest cas, la solució del daemon seria ideal.
> - Sí, el que vull fer és pujar el programa a memòria i
> poder fer crides puntuals per tal de processar la seva
> sortida.
Suposaré que la interacció amb aquest procés es fa amb
l'stdin i l'stdout. Si és així, tens la possibilitat de
d'utilitzar dues "named pipes" i associar-les a l'stdin
i l'stdout respectivament abans de fer un exec del teu
"Server Manager" (que les heredarà com a canals 0 i 1).
Un cop fet això, ja pots fer consultes i llegir els
resultats des de les "named pipes" sense que et calgui
modificar el Server Manager.
Aquesta solució es pot implementar en C o en Perl, però
només en sistemes que disposin de "named pipes":
% mknod entrada p
% mknod sortida p
% cat >setup.c <<EOF
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
int
main(void)
{
int fd;
close(0);
fd = open("entrada", O_RDONLY);
if (fd == -1) {
perror("entrada");
return 1;
}
close(1);
fd = open("sortida", O_WRONLY);
if (fd == -1) {
perror("entrada");
return 2;
}
execl("servermanager", "servermanager", 0);
return 3;
}
EOF
% cc -o setup setup.c
% ./setup &
Aquesta seria la idea general de la solució amb "named pipes"
(tingueu en compte que us la descric de memòria, és a dir,
que no l'he provat i podria tenir alguns errors). La part del
client, la deixo com a exercici...
use Perl;
no Patents;
- --
Alex Muntada <alexm at ac.upc.es>
http://people.ac.upc.es/alexm/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
iD8DBQFAiOqfLdxCGS3zaBERAve2AKDaiyLPYkG4Hxjy2qJh1OV3KZ4rMACgxTwS
IvOWB/Pq9cIyYPSXhB9sPck=
=0v7h
-----END PGP SIGNATURE-----
More information about the Barcelona-pm
mailing list