Permet d'associer un descripteur déjà utilisé à une autre ouverture de fichier. Ceci permet de réaliser facilement les redirections du shell. 
FILE *freopen(const char *ref,
              const char *mode,
              FILE *f)
Par exemple les redirections de la ligne shell:
com <ref1 >>ref2peuvent être réalisées avec
if (!freopen("ref1", "r", stdin) || !freopen("ref2", "a", stdout))
{
    fprintf(stderr, "erreur sur une redirection\n");
    exit(1);
}
execl("./com", "com", NULL);