Comment fermer les effets STDOUT printf

Si quelqu’un ferme un tableau de descripteur de processus tel que:

close(STDOUT); 

puis ouvre un fichier pour lire / écrire:

 int ​fd = open(​"myFile"​, O_RDWR); 

et après cela utilise printf:

 printf("hello"); 

Je sais que cela ne va pas à l’écran, mais sera-t-il imprimé dans le fichier? Ou doit-il utiliser fprintf ou l’appel système d’écriture?

De la page de manuel de open:

Le descripteur de fichier renvoyé par un appel réussi sera le descripteur de fichier ayant le plus petit numéro actuellement ouvert pour le processus.

Lorsque vous fermez le descripteur de fichier pour STDOUT, l’appel système ouvert suivant affectera le fd de stdout au nouveau fichier. Printf envoie juste à la fd peu importe si elle est stdout ou non. Donc, un printf dans ce scénario videra la sortie dans “myfile”