Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Programmation et administration système
Programmation et administration système Vos questions sur les scripts d'administration système, création de compte utilisateur, socket, fork, ping, etc...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/04/2012, 18h37   #1
Glavio
Membre régulier
 
demoulin max
Étudiant
Inscription : juillet 2007
Messages : 70
Détails du profil
Informations personnelles :
Nom : demoulin max
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 70
Points : 83
Points : 83
Envoyer un message via MSN à Glavio
Par défaut mon processus cmd.exe n'est pas bien configuré lorsqu'il est lancé via la fonction system()

Bonjour,

Je travaille à faire tourner mon script perl sous windows en tant que service.

J'utilise à cette fin le module Win32:aemon, pour manipuler SCM.

Mon script perl est lancé par un .bat, ce dernier étant lui même appelé via la fonction system()

La commande ressemble à:

Citation:
START \"title\" /Dc:\\path\\to\\bat\\script\\dir\\ \"script.bat\"
Quand je lance la commande directement depuis l'interpréteur de commande, le titre "title" est correctement définit: la propriété "command line" du gestionnaire de tâches affiche bien la ligne suivante:

Citation:
cmd /c "title"C:\path\to\script.bat" "

Cepandant après l'appel à system(), déclenché lors du démarrage de mon service, la propriété "command line" du gestionnaire de tâches est la suivante:

Citation:
cmd /c ""C:\path\to\script.bat" "
Je ne comprends pas pourquoi mon titre n'est pas correctement configuré.


Note: Tant qu'a faire, j'aimerai également savoir comment récupérer le PID du process lancé par mon .bat. La chaine est la suivante:

Service.pl -> cmd.exe -> script.pl


Merci.
Glavio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 09h23   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 553
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 553
Points : 31 769
Points : 31 769
Bonjour,

J'ai un peu de mal à comprendre ce que vous faite, j'ai l'impression que c'est tiré par les cheveux tout ça.

Que souhaitez-vous concrètement faire ? Je ne vois pas le perl dans votre demande ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 09h47   #3
Glavio
Membre régulier
 
demoulin max
Étudiant
Inscription : juillet 2007
Messages : 70
Détails du profil
Informations personnelles :
Nom : demoulin max
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 70
Points : 83
Points : 83
Envoyer un message via MSN à Glavio
Bonjour,

La propriété "title" d'un processus est ce qui apparaît dans la colonne "Windows title", lorsque l'on effectue la commande suivante:
Citation:
tasklist /v

Lorsque je crée un processus via l'interpréteur de commande:

Citation:
START \"title\" /Dc:\\path\\to\\bat\\script\\dir\\ \"script.bat\"
Le titre "title" est bien pris en compte.

Lorsque je lance cette même commande via la commande system() de perl, ou bien avec l'opérateur backticks (``), le titre n'est pas bien pris en compte.
Glavio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 09h54   #4
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 553
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 553
Points : 31 769
Points : 31 769
Bah il faut nous montrer ton programme Perl.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 09h58   #5
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 553
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 553
Points : 31 769
Points : 31 769
Chez moi cela fonctionne dans mon programme perl :
Code :
system 'start "Mon titre du programme" ' . '"C:/Documents and Settings/user/Bureau/tk.pl"';
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 10h01   #6
Glavio
Membre régulier
 
demoulin max
Étudiant
Inscription : juillet 2007
Messages : 70
Détails du profil
Informations personnelles :
Nom : demoulin max
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 70
Points : 83
Points : 83
Envoyer un message via MSN à Glavio
Je viens de comprendre la raison de mon problème.

Si on lance le programme perl qui contiens system(la_commande_START) via une ligne de commande, le titre est bien définit car une nouvelle fenêtre est effectivement créée.

Lorsque la fonction est appelée via un service windows, aucune nouvelle fenêtre n'est générée, aucun titre n'est donc pris en compte.

Ce qui m'amène à redéfinir mon problème (je vais créer un nouveau sujet). Ce dernier est le suivant:

La commande system(), dans mon service, créé un processus qui ne semble pas lié par une relation "parent-enfant", au script perl appelant, lancé par le service.
Lorsque je ferme le service, le script appelant est bien fermé, mais pas le processus lancé par la commande system()
Glavio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h30.


 
 
 
 
Partenaires

Hébergement Web