Il faut attendre le fils bien sûr, mais avant cela il faut fermer le descripteur de fichier sur lequel lit le fils, sinon celui-ci attendrait indéfiniment que son père émette d’autres données, conduisant à un interblocage (la fermeture d’un canal se charge de vider le tampon juste avant sa fermeture, donc on ne perd rien). Concrètement, on remplace la ligne 52 par:
     
         let output = out_channel_of_descr fd_out in
         generate len output;
         close_out output;
         ignore(waitpid [] k);;
De même, on va entourer le bloc 37–41 (désigné par ...) par les lignes suivantes:
     
           try
             ...
           with End_of_file ->
             close_out output;
             ignore (waitpid [] p)