Bonjour à tous
Dans un programme je fais un appel à fork :
Il me retourne :Code:$pid = fork or die "fork : $!\n";
J'ai beau chercher je ne trouve pas d'où peut venir le problème !Code:fork : Repérage illégal
Merci d'avance.
Version imprimable
Bonjour à tous
Dans un programme je fais un appel à fork :
Il me retourne :Code:$pid = fork or die "fork : $!\n";
J'ai beau chercher je ne trouve pas d'où peut venir le problème !Code:fork : Repérage illégal
Merci d'avance.
je pense qu'il faut le définir
Enfin je sais pas si ca vient de ca mais ca ne coute rien d'essayer lolCode:defined ($pid = fork) or die "fork impossible";
:lol:
Re-bonjour
Grand merci, ça marche !
A+
Un petit peu d'explications ...
fork retourne une valeur, qui est le PId du fils dans le cas du processus père, 0 dans le cas du processus fils, ce qui permet de faire la distinction. Par contre, en cas d'échec du fork, la valeur retournée est indéfinie.Citation:
Envoyé par Nickname
Ainsi, en testant si le retour (donc $pid) est défini ("defined ($pid = fork)"), on sait si le fork a réussi ou non. Ensuite, plus tard, on testera la valeur de $pid pour savoir si l'on fait tourner le père ou le fils ...
L'écriture :est incorrecte car insuffisante. Dans le cas du processus père, tout baigne, on passe à la suite, mais dans le cas du processus fils, aussi bien que de l'échec du fork, le résultat est nul ou indéfini, donc on enchaine sur le "or die" :(.Code:$pid = fork or die "fork impossible";
Maintenant, si le problème est résolu, le tag idoine ([Résolu]) doit être apposé sur le sujet en utilisant le bouton du même nom, en bas à gauche de l'interface, pendant la visualisation du sujet. ;)
Bon Perl !
[Edit]Correction de l'intervertion entre retour du fork pour le père et pour le fils :?[/Edit]
A noter ce thread dans la FAQ.
@++
Merci beaucoup pour cette explication limpide, je débute donc quelques mécanismes internes du traitement des variables me sont un peu obscure !
Juste une petite précision :
N'est ce pas plutôt dans le processus père que fork renvoi le PID du fils créé, et 0 dans le processus fils ?Citation:
Envoyé par 2Eurocents
Merci
A+
Si, tout à fait :oops:
C'est d'ailleurs logique ...
Le processus fils peut interroger le système pour connaitre son propre PId, ainsi que celui de son père. Il est donc naturel que fork lui renvoie 0.
Le processus père, lui, n'a aucun autre moyen de connaître sa filliation qu'avec le retour de fork.
Comme quoi, il faut toujours se relire :?
Je corrige mon post ...
Merci !