IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI Delphi Discussion :

[Kylix] Libc.system(), appelant attendant l'appelé


Sujet :

EDI Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut [Kylix] 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.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 8
    Points
    8
    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

  3. #3
    Membre régulier Avatar de Nillak
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 138
    Points : 77
    Points
    77
    Par défaut
    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)

Discussions similaires

  1. [Kylix] Libc system
    Par Nillak dans le forum EDI
    Réponses: 7
    Dernier message: 12/12/2007, 21h20
  2. [Kylix] pb avec le Libc.system sous redhat
    Par zheng dans le forum EDI
    Réponses: 1
    Dernier message: 15/07/2004, 10h58
  3. [Kylix] PB Utilisation libc.system
    Par Louargant Bertrand dans le forum EDI
    Réponses: 1
    Dernier message: 19/06/2003, 18h36
  4. [Kylix] PIOFILE ,libc.system....??
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 06/12/2002, 22h34
  5. [Kylix] libc.system
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 19/10/2002, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo