我有一个封闭的程序(即Intersystems 'csession' Cachédb终端),它将写入作为参数给出的文件。它这样做了几次,然后返回。每次,给定的文件都会被覆盖,所以最后,我只得到最后一个结果......
我的想法是,可以欺骗并提供一个特殊的伪文件作为参数,它将充当代理并将写入其中的内容附加到另一个文件中。
create proxyfile as >> realfile
cat "Hello" > proxyfile
cat "Bye" > proxyfile
cat realfile
Hello
Bye
有没有人认为这可能是可行的,可能使用一点实用程序?
您可以使用 FIFO 文件(命名管道)来实现此目的。要查看它们的工作原理,请打开两个终端窗口。一、做
cd /tmp
mkfifo pipe
tail -f pipe
而在另一个
cd /tmp
echo "Hello" > pipe
echo "Bye" > pipe
对于实际问题,让您的应用程序写入 FIFO 并在后台使用tail -f pipe > outputfile
将结果收集到 outputfile
中。
您可以将/dev/stdout
用作输出文件,将其管道传输到 cat,并将标准输出附加到带有 >>
的文件中
csession /dev/stdout | cat >>realfile
这不会覆盖,而是附加到现有文件。