OVH Cloud OVH Cloud

Net::Server et appel système

4 réponses
Avatar
David
Salut,

Je souhaite faire un micro-serveur qui tourne en démon et qui exécute un
appel système
J'ai utilisé le module Net::Server mais au moment de faire un appel système,
le client est déconnecté
Après avoir cherché un peu partout sur le net, il faut apparemment forké
pour lancer un appel système avec la fonction exec()
Le problème c'est que j'ai besoin de récupérer la sortie écran de la
commande système, et pas moyen d'utiliser un system() ou un backstick, ca ne
marche

Est ce que qqun a déjà eu ce problème ? Ou un début de solution ? Une piste
?
J'ai tenté d'utiliser un autre module Net::Server::Generic) mais il est pas
aussi performant que Net::Server

Cordialement,

4 réponses

Avatar
Ced-2
"David" writes:

Je souhaite faire un micro-serveur qui tourne en démon et qui exécute un
appel système
J'ai utilisé le module Net::Server mais au moment de faire un appel système,
le client est déconnecté
Après avoir cherché un peu partout sur le net, il faut apparemment forké
pour lancer un appel système avec la fonction exec()
Le problème c'est que j'ai besoin de récupérer la sortie écran de la
commande système, et pas moyen d'utiliser un system() ou un backstick, ca ne
marche


Pourquoi ne pas utiliser @output=`commande systeme` ?

--
Cédric Barboiron

Avatar
David
parce que quand je le fais, le client est déconnecté
j'ai essayé avec system(), `command` et open (SYSTEMCALL, "ls -l |") mais le
client est directement déconnecté
j'ai commencé à utiliser directement IO::Socket mais c assez fastidieux : il
faut tout reparamétrer à ma sauce (nbre de clients max, @IP autorisées à se
connecter, timeout, ...)
j'aurais préféré utiliser directement Net::Server qui est bien plus rapide à
mettre en place

David

"Cédric Barboiron" a écrit dans le message de news:

"David" writes:

Je souhaite faire un micro-serveur qui tourne en démon et qui exécute un
appel système
J'ai utilisé le module Net::Server mais au moment de faire un appel
système,


le client est déconnecté
Après avoir cherché un peu partout sur le net, il faut apparemment forké
pour lancer un appel système avec la fonction exec()
Le problème c'est que j'ai besoin de récupérer la sortie écran de la
commande système, et pas moyen d'utiliser un system() ou un backstick,
ca ne


marche


Pourquoi ne pas utiliser @output=`commande systeme` ?

--
Cédric Barboiron



Avatar
Ced-2
"David" writes:

parce que quand je le fais, le client est déconnecté
j'ai essayé avec system(), `command` et open (SYSTEMCALL, "ls -l |") mais le
client est directement déconnecté
j'ai commencé à utiliser directement IO::Socket mais c assez fastidieux : il
faut tout reparamétrer à ma sauce (nbre de clients max, @IP autorisées à se
connecter, timeout, ...)
j'aurais préféré utiliser directement Net::Server qui est bien plus rapide à
mettre en place


Je n'ai jamais utilisé Net::Server donc je ne peux pas bcp plus t'aider.

Désolé.

--
Cédric Barboiron

Avatar
David
J'ai trouvé :
il suffit d'appeler la commande système par une fonction et de ne pas
utiliser l'argument -T (va savoir pourquoi) dans le shebang

"Cédric Barboiron" a écrit dans le message de news:

"David" writes:

parce que quand je le fais, le client est déconnecté
j'ai essayé avec system(), `command` et open (SYSTEMCALL, "ls -l |")
mais le


client est directement déconnecté
j'ai commencé à utiliser directement IO::Socket mais c assez fastidieux
: il


faut tout reparamétrer à ma sauce (nbre de clients max, @IP autorisées à
se


connecter, timeout, ...)
j'aurais préféré utiliser directement Net::Server qui est bien plus
rapide à


mettre en place


Je n'ai jamais utilisé Net::Server donc je ne peux pas bcp plus t'aider.

Désolé.

--
Cédric Barboiron