Probleme avec Fork [Perl] - Perl - Programmation
Marsh Posté le 09-01-2006 à 00:33:39
j'ai réussi à faire ce que je voulais dans ce cas assez simple. Mais je ne vois pas comment faire pour généraliser. La j'arrive à afficher 3 valeurs différentes en factorisant un petit peu le code, mais j'aimerais arriver à faire une fonction qui prend en parametre le nombre de valeurs à afficher et qui arrive au mm resultat que le code ci-dessous mais sans devoir créer à l'avance l'architecture de la fonction pour n valeurs. Enfin bref, éviter de faire n branches avec des if et while pour afficher x valeurs. Avez-vous une idée?
Peut-etre du côté de la recurrence, mais je m'y connais pas des masses
voilà le code qui marche pour l'affichage de 3 valeurs différentes:
Code :
|
Marsh Posté le 09-01-2006 à 02:05:18
Ce que tu cherche a faire est, a mon avis, fou.
En fait tu te poses un probleme qui n'existe pas (J'ai beaucoup aime la partie sur le scheduler). J'ai modifie un petit peu ton code pour que tu comprennes pourquoi.
Code :
|
Si tu utilises print pour afficher quelque chose la chaine est stockee dans un buffer (pour eviter de faire des appels systemes trop frequents). Lorsque le buffer est plein ou si celui-ci contient un '\n', le buffer est flushe.
Rajoute ceci en haut du script juste apres le 'use scrict';
Code :
|
Tu pourras mediter en changeant les valeurs de $|.
Marsh Posté le 08-01-2006 à 21:10:30
Bonsoir,
je débute en perl, donc ma question vous paraitra peut-être bête!
Je veux simplement créer un processus fils qui toutes les x secondes va réaliser un bout de code. Je mets donc un sleep 10 dans au niveau du code du fils, mais du coup il n'arrive jamais à prendre la main. Sans le sleep, j'obtiens sur la sortie standard une serie de 100 b puis 100 a ... (lié au scheduler, ça me va), par contre avec le sleep, j'obtiens que des a.
Avez vous une solution pour faire en sorte que le fils prenne aussi la main de temps en temps? Le but final est d'interroger un serveur et lui demander l'envoi d'un hash sur un fichier.
Merci d'avance
voilà mon code: