2010-11-28 23 views
0

Ceci est une question qui n'est liée à aucune situation pratique dans laquelle je suis, mais elle m'a toujours dérangé. Que pourrait-il se passer si un script lit et ajoute des lignes dans un fichier texte et un autre script dans le même fichier? Je sais que lorsqu'un script ouvre un fichier texte, il fonctionne avec la version de ce fichier à partir du moment où il a été ouvert, sans tenir compte des modifications suivantes. Je veux que les deux scripts fonctionnent avec la dernière version possible (je reconnais que ce ne sera pas en temps réel) du fichier texte.Écrire et lire à partir du même fichier texte avec différents scripts

Je suppose qu'une façon de poser la question est la suivante: quelle est la meilleure façon de gérer ces scripts? Quand dois-je fermer et ouvrir le fichier dans le premier?

Répondre

0

Je sais que lorsqu'un script ouvre un texte fichier, il travaille avec la version de ce fichier à partir du moment où il a été ouvert, ne pas considérer la suite modifications

Ceci est faux déclaration . Par exemple, essayez la commande suivante dans Unix:

tail -f <some file> 

Puis essayez d'ajouter des lignes à ce fichier. La commande tail suivra vos ajouts. (En supposant que vous faites flush périodiquement lors de l'écriture).

+0

Est-ce que "queue" ou similaire existe dans d'autres langages de programmation? Comme indiqué, je n'ai pas besoin de faire cela pratiquement, donc j'aimerais une réponse qui fonctionne dans la plupart des situations et pas seulement dans des situations spécifiques (c'est-à-dire un shell Unix). – Gurzo

+0

Les systèmes Windows, basés sur le noyau NT, sont compatibles POSIX (mais pas complètement). Cela signifie que ces versions doivent être conformes aux commandes UNIX 'tail'. – Thevs

0

Un problème que vous pourriez rencontrer est le fichier qui est verrouillé par un processus lorsque l'autre essaie d'y accéder. Pour éviter cela, vous devez ouvrir, lire dans le fichier entier (ou écrire la nouvelle ligne) et fermez-le tout de suite. De plus, vous pouvez ajouter une gestion des erreurs autour de l'ouverture, donc si elle échoue parce que le fichier est verrouillé, il peut réessayer après une courte pause.

0

La commande tail ferait ce que vous voulez, sinon vous auriez besoin d'ouvrir, éditer, enregistrer, fermer à partir d'un script puis l'autre ouvre, lit, ferme et ainsi de suite. Les scripts devraient se relayer