Comment copier la description du fichier lors de son utilisation au lieu de le partager?

Lorsqu’un processus se faufile, l’enfant partagera avec son parent la description du fichier qui était ouverte avant le bifurcation.

Existe-t-il un moyen de faire en sorte que l’enfant ait sa propre copie de la description du fichier (qui inclut le décalage et l’indicateur d’état du fichier)?

J’ai besoin de cela car je ne veux pas que les deux parents partagent le même décalage du fichier; Si un processus a effectué une lecture, je ne souhaite pas que le décalage du fichier pour le deuxième processus soit modifié.

Il y a à la fois un «descripteur de fichier ouvert» et une «description de fichier ouvert». Lorsqu’un fichier est ouvert avec open() , un descripteur de fichier et une description de fichier sont créés. Lorsqu’un descripteur de fichier est dupliqué ( dup() ou dup2() ), les deux descripteurs font référence à la même description de fichier ouvert.

Sur fork() , les descripteurs de fichiers du parent sont copiés (dupliqués) dans l’enfant; le descripteur dans le parent et l’enfant pointent tous deux vers la même description de fichier ouvert.

Le processus fils doit avoir sa propre copie des descripteurs de fichiers du parent. Chaque descripteur de fichier de l’enfant doit faire référence à la même description de fichier ouvert avec le descripteur de fichier correspondant du parent.

Il est impossible de le faire fonctionner autrement – vous devez fermer et rouvrir le fichier pour obtenir une description de fichier ouverte distincte.