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

Langage Perl Discussion :

[langage] [Fork] Détecter un fichier


Sujet :

Langage Perl

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 866
    Points : 4 864
    Points
    4 864
    Par défaut [langage] [Fork] Détecter un fichier
    Bonjour @ vous !

    Suite des aventures d'un ex Javaiste-Ciste dans le monde fabuleux du Perl. Voici mon problème. A la fin de mon script, je lance via un fork le navigateur Web. Ok, no souci. Maintenant, j'ai la possibilité de créer une page Excel. Ok, je peux la créer via ma page Web. Aussi, je voudrais que si la page xls est crée, je puisse la copier dans un autre répertoire. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    my($nom) = &Relative_path($rep);
    my($url) = "http://localhost/$nom/interact-prot.shtml";
    my($kidpid);
    if (!defined($kidpid = fork())) {
    die "Erreur systeme : $!\n";
    } elsif ($kidpid == 0) {
    exec("explorer $url");
    die "Explorer n'a pas été lancé !\n";
    } else { 
    waitpid($kidpid, 0);
    my($xls) = $rep."\\interact-data.xls";
    printf ("%s\n", $xls);
    if ( -f $xls) {
    `cp $xls $ARGV[$#$ARGV]`;
    $xls = $ARGV[$#$ARGV]."\\interact-data.xls";
    if ( -f $xls) {
    printf ("Copie du fichier interact-data.xls dans votre répertoire %s.\n", $ARGV[$#$ARGV]);
    }
    }
    }
    Seulement, cette copie ne s'effectue pas.
    Qu'ai-je loupé ?

    Merci de vos réponses !

    @ ++

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Plusieurs petits problèmes :
    le dernier indice d'un tableau est $#tab, et non $#$tab
    tu utilise cp alors que tu es censé être sous Windows (du fait de l'appel à explorer), es-tu sûr de toi ? Tu devrais plutôt utiliser copy, non ? Pourquoi ne pas utiliser plutôt le module File::Copy, qui est portable.

    Et puis franchement... arrête d'utiliser printf !! print est beaucoup plus conçis et bien moins abstrus...

    Ah, aussi je t'ai reposté une réponse pour améliorer ta fonction Relative_path() dans le topic précédent.

    --
    Jedaï

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 866
    Points : 4 864
    Points
    4 864
    Par défaut
    Citation Envoyé par Jedaï
    Et puis franchement... arrête d'utiliser printf !! print est beaucoup plus conçis et bien moins abstrus
    . Ce sont mes reliquats de C ! .

    Bon, sinon, pour cp, c'est parce qu'en même temps je suis sous environnement cygwin, d'où le cp.
    Mais, sinon, je vois toujours pas comment résoudre mon problème.

    @ ++

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ok, je n'ai pas encore de solution, mais au moins j'ai un problème :
    Après test, il s'avère que "explorer" est une pseudo-commande, qui déclenche bien le lancement d'explorer mais qui se finit (du point de vue du système) instantanément... Donc l'échec n'est pas étonnant vu que le waitpid retourne immédiatement après l'appel d'explorer.
    Peut-être fouiller du côté de Win32::Job pourrait-il aider.

    --
    Jedaï

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 866
    Points : 4 864
    Points
    4 864
    Par défaut
    Citation Envoyé par Jedaï
    Peut-être fouiller du côté de Win32::Job pourrait-il aider.
    Euh, et avec décodeur, plize ! .
    Bon, de toute façon, c'est à moi de chercher aussi donc, je vais regarder.
    Toutefois, penses-tu que si je lance le navigateur via son chemin absolu (merci de me dire comment virer ces +%µ/{# d'espaces entre les noms de répertoires), penses-tu que ça marchera mieux ?

    @ ++

  6. #6
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par GLDavid
    Euh, et avec décodeur, plize !
    La reference absolue c'est le Cpan (cpan.org) et donc il voulait parler de ca :

    http://search.cpan.org/~gsar/libwin32-0.191/Job/Job.pm

    Bienvenue dans le monde des perliens le monde de la programmation detendu et feineante

    Sous windows, telecharge activerperl... ca marche tres bien voir mieux que sous cygwin : http://www.activestate.com/Products/ActivePerl/?_x=1

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Oui, j'utilise ActivePerl (et cygwin, mais pas pour perl) et Win32::Job fait partie des modules fournis avec directement. De plus ActivePerl s'occupe tout seul de mettre toute la doc en html avec une jolie page d'accueil, et c'est gratuit et on ne te fiche pas... donc je recommande chaudement !!!

    --
    Jedaï

  8. #8
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 866
    Points : 4 864
    Points
    4 864
    Par défaut
    Bouhh ! La copie ne se fait toujours pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    my($nom) = &Relative_path($rep);
    my($url) = "http://localhost/$nom/interact-prot.shtml";
    my($kidpid);
    if (!defined($kidpid = fork())) {
    die "Erreur systeme : $!\n";
    } elsif ($kidpid == 0) {
    #exec("explorer $url");
    my($job) = Win32::Job->new;
    $job->spawn("explorer", $url);
    my($ok) = $job->run(5*60);
    die "Explorer n'a pas été lancé !\n";
    } else {
    waitpid($kidpid, 0);
    } 
     
    my($xls) = $rep."\\interact-prot.xls";
    if ( -f $xls) {
    `copy $xls $ARGV[$#$ARGV]`;
    $xls = $ARGV[$#$ARGV]."\\interact-prot.xls";
    if ( -f $xls) {
    printf ("Copie du fichier interact-prot.xls dans votre répertoire %s.\n", $ARGV[$#$ARGV]);
    }
    }
    Help me plize !!!

    @ ++

  9. #9
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 866
    Points : 4 864
    Points
    4 864
    Par défaut
    Bon, de toute façon mon dernier code ne lance pas Explorer . Mais bon, ça me fait pas la copie pour autant après l'exécution d'Explorer.

    @ ++

  10. #10
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Je suis pas tres reveille ... mais explorer ca m'ouvre l'explorateur de fichier ? C'est normal ou pas ?

    Tu peux me reexpliquer ce que tu veux faire exactement. ( desole je suis HS et du coup c'est pas clair.)

  11. #11
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 866
    Points : 4 864
    Points
    4 864
    Par défaut
    Salut !

    Pardon d'avoir été si peu clair, je vais tâcher d'être simple. Au cours de mon script, une page HTML se crée. Jusque là, ça va. Cette page HTML permet la génération d'un fichier xls (Excel). Donc, si je veux pouvoir créer ce fichier xls, il faut que j'ouvre un navigateur avec l'URL de cette page web. Jusque là, j'arrive à faire. Mon problème est que je voudrais que mon script se mettent en veille tant qu'Explorer n'est pas fini. Lorsqu'Explorer se termine, alors, on vérifie s'il y a bien eu edition d'un fichier xls.
    Ai-je été plus clair ?

    En tout cas, merci de votre aide !!!

    @ ++

  12. #12
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 866
    Points : 4 864
    Points
    4 864
    Par défaut
    Citation Envoyé par Jedaï
    Après test, il s'avère que "explorer" est une pseudo-commande, qui déclenche bien le lancement d'explorer mais qui se finit (du point de vue du système) instantanément... Donc l'échec n'est pas étonnant vu que le waitpid retourne immédiatement après l'appel d'explorer.
    C'est ça ! J'ai mis le nom complet de l'exécutable et là, c'est ok !

    Thank you very much !!

    @ ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 15h49
  2. Réponses: 4
    Dernier message: 24/04/2003, 22h28
  3. [langage] Créé un hash dans un fichier...
    Par Smooky dans le forum Langage
    Réponses: 3
    Dernier message: 26/03/2003, 08h49
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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