J'essaie de comprendre comment le fork()
fonctionne en C. Voici un exemple de problème tiré de mon manuel :
int main(void) { pid_t process_id; int status; if (fork() == 0) { if (fork() == 0) { printf("A"); } else { process_id = wait(&status); printf("B"); } } else { if (fork() == 0) { printf("C"); exit(0); } printf("D"); } printf("0"); return (0); }
Parmi les sorties suivantes, lesquelles sont possibles ?
1) D0A0B0C
2) CDAB000
3) DA00CB0
4) D0AB0CD
5) AD00BC0
Je l'ai dessiné sur papier et je pense que la bonne réponse est : 1, 3, 5. J'ai eu quelques difficultés à contourner le wait(&status)
Cependant, il ne s'agit pas d'une simple question d'argent, mais bien d'une question de sécurité. Ma réponse est-elle correcte ?