Я пишу приложение, которое действует как фильтр: он читает ввод из файла (stdin), обрабатывает и записывает вывод в другой файл (stdout). Входной файл полностью считывается до того, как приложение начнет запись выходного файла.
Поскольку я использую stdin и stdout, я могу запустить, как это:
$ ./myprog <file1.txt >file2.txt
Он отлично работает, но если я пытаюсь использовать тот же файл, что и вход и выход (то есть: чтение из файла и запись в тот же файл), например:
$ ./myprog <file.txt >file.txt
он очищает file.txt
, прежде чем программа имеет возможность прочитать его.
Есть ли способ сделать что-то подобное в командной строке в Unix?