Bug du fork sous Linux !!
Fermé
thegimp
Messages postés
2
Date d'inscription
lundi 29 novembre 2004
Statut
Membre
Dernière intervention
29 novembre 2004
-
29 nov. 2004 à 09:52
SuperKoko - 16 nov. 2008 à 14:02
SuperKoko - 16 nov. 2008 à 14:02
A voir également:
- Bug du fork sous Linux !!
- Bug yahoo mail - Accueil - Mail
- Bug chatgpt - Accueil - Intelligence artificielle
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Bug yahoo mail 27 fevrier 2024 ✓ - Forum Yahoo mail
4 réponses
no bug ! Il faut laisser le temps au temps ....
#include <stdio.h>
#include <signal.h>
#include <wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
pid_t pid_fils=33;
void f() {
printf("%d \n", pid_fils);
}
int main(void) {
signal(SIGUSR1, f);
switch ((pid_fils=fork())) {
case -1: perror("fork"); exit(1);
case 0: usleep(10);kill(getppid(), SIGUSR1); exit(0);
default : pause();wait(NULL);
}
exit(0);
}
#include <stdio.h>
#include <signal.h>
#include <wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
pid_t pid_fils=33;
void f() {
printf("%d \n", pid_fils);
}
int main(void) {
signal(SIGUSR1, f);
switch ((pid_fils=fork())) {
case -1: perror("fork"); exit(1);
case 0: usleep(10);kill(getppid(), SIGUSR1); exit(0);
default : pause();wait(NULL);
}
exit(0);
}
Bon, je sais que ce thread est vieux, mais si quelqu'un tombe dessus, je voudrais signaler que Linux n'est pas buggé.
Ce programme contient une "race condition".
C'est à dire: Entre le moment où fork() a effectivement cloné les processus, et le moment ou le processus parent assigne la valeur de retour du fork() à la variable pid_fils, le fils a eu le temps d'envoyer le signal au processus parent, et le processus parent voyant le signal arriver, exécute immédiatement f().
(En plus, la variable devrait être volatile)
Ce programme contient une "race condition".
C'est à dire: Entre le moment où fork() a effectivement cloné les processus, et le moment ou le processus parent assigne la valeur de retour du fork() à la variable pid_fils, le fils a eu le temps d'envoyer le signal au processus parent, et le processus parent voyant le signal arriver, exécute immédiatement f().
(En plus, la variable devrait être volatile)
29 nov. 2004 à 13:06
29 nov. 2004 à 14:22