Имам затворена програма (а именно Intersystems"csession" Cachédb терминал), който ще пише във файл, даден като параметър. Той прави това няколко пъти, след което се връща. Всеки път, даден файл е презаписан, така че в края получавам само последния резултат ...
Имах идеята, че може да бъде възможно да се подвежда и да се даде специален псевдофайл като параметър, който да действа като прокси и да добавя в него записаното в него.
create proxyfile as >> realfile
cat "Hello" > proxyfile
cat "Bye" > proxyfile
cat realfile
Hello
Bye
Дали някой мисли, че това може да е изпълнимо, вероятно използвайки малко полезна програма?
Отговори:
4 за отговор № 1За тази цел можете да използвате FIFO файл (именуван тръба). За да видите как работят, отворете два прозореца на терминала. В едно, направете
cd /tmp
mkfifo pipe
tail -f pipe
и в другата
cd /tmp
echo "Hello" > pipe
echo "Bye" > pipe
За реалния проблем, оставете приложението си да пише във FIFO и да го използва tail -f pipe > outputfile
на заден план, за да събере резултатите outputfile
.
1 за отговор № 2
Можеш да използваш /dev/stdout
като изходен файл, свържете го към cat и добавете стандартен изход към файл с >>
csession /dev/stdout | cat >>realfile
Това няма да презапише, а ще се добави към съществуващия файл.