Précédent   Forum des professionnels en informatique > Environnements de développement > Delphi > Kylix
Kylix Environnement de développement RAD sous Linux avec compilateur natif pour Delphi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2007, 10h44   #1
Invité de passage
 
Inscription : avril 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 31
Points : 4
Points : 4
Par défaut Libc.system(), appelant attendant l'appelé

Bonjour,

J'ai parcouru tous les threads sur le sujet mais je n'ai trouvé aucun qui corespondait à mon problème:

Les acteurs :
- un CGI qui doit renvoyer des pages HTML
- un deamon (appli console) qui peut renseigner le cgi sur demande via TCP-IP

Lorsqu'il doit effectuer un traitement le cgi demande ses infos au deamon via TCP, effectue son traitement et fait son sendresponse (page affichée dans navigateur) au moment de se fermer.

S'il se rend compte que personne n'écoute sur le port TCP, alors il lance le programme : libc.system('Deamon.sh &'), redemande les infos effectue son traitement mais au moment de faire son sendresponse et de se fermer, il ne fait rien.
Il attend que le deamon soit terminé avant de se fermer.
Du coup il n'y a pas de retour dans le navigateur pour le CGI qui doit lancer le deamon.

Si quelqu'un a une idée pour empecher le "père" d'attendre le "fils"...

Merci

PS :
J'ai essayé, dans system(), avec et sans le & , en appelant directement l'exe ou en passant par un script sh qui lance l'exe.
Floverdoz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 05h59   #2
Invité de passage
 
Inscription : juillet 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 7
Points : 4
Points : 4
Par défaut la commande system attend toujours la fin du processus fils

La command system fait un fork() puis un waitpid().
Cela veut dire que par conception elle attend la fin du pocess fils pour sortir.
Si tu dispose sous pascal de l'equivalent de fork() ou meme spawn() et exec() utilise les.
Autrement inclus les fonctions fork() qui sont dans libc.
Comment ?? je n'en ai aucune idees a ce moment mais je sais que cela est possible.

Je peux te fournir un exemple C si tu sais faire.
Yves
yautran est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 18h49   #3
Membre du Club
 
Avatar de Nillak
 
Inscription : octobre 2006
Messages : 138
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : octobre 2006
Messages : 138
Points : 45
Points : 45
Bonjour,
j'ai un problème similaire déjà posté ICI
avez-vous résolu le votre ?
__________________
C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison ! (Pierre Desproges)
Nillak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h19.


 
 
 
 
Partenaires

Hébergement Web