J'écris une application qui agit comme un filtre: elle lit l'entrée d'un fichier (stdin), traite et écrit la sortie dans un autre fichier (stdout). Le fichier d'entrée est complètement lu avant que l'application commence à écrire le fichier de sortie.Utiliser le même fichier pour stdin et stdout avec redirection
Depuis que je suis en utilisant stdin et stdout, je peux courir est comme ceci:
$ ./myprog <file1.txt >file2.txt
Il fonctionne très bien, mais si je tente d'utiliser le même fichier que l'entrée et la sortie (qui est: lire à partir un fichier et écrire dans le même fichier), comme ceci:
$ ./myprog <file.txt >file.txt
il nettoie file.txt
avant que le programme a la chance de le lire.
Est-il possible de faire quelque chose comme ça dans une ligne de commande sous Unix?
Étrange. Pourquoi '$ (./myprog> file.txt)
TheoYou
Votre exemple le fait car '> file.txt' tronque le contenu de file.txt et c'est d'ailleurs le même fichier que' fichier.txt' crée un * nouveau fichier * (inode différent sur le même chemin) séparé de ce que '
antak
Donc, tout ce que nous avons à faire est de lancer la sous-shell nous-mêmes. Je pense que je connais la réponse, mais je ne sais toujours pas pourquoi ... – TheoYou