1

我有一个封闭的程序(即 Intersystems 'csession' Cachédb 终端),它将写入作为参数给出的文件。它这样做了几次,然后返回。每次,给定的文件都会被覆盖,所以最后,我只得到最后一个结果......

我的想法是,可以欺骗并提供一个特殊的伪文件作为参数,该伪文件将充当代理并将写入其中的内容附加到另一个文件中。

create proxyfile as >> realfile
cat "Hello" > proxyfile
cat "Bye" > proxyfile
cat realfile
Hello
Bye

有没有人认为这可能是可行的,可能使用一个小实用程序?

4

2 回答 2

4

为此,您可以使用 FIFO 文件(命名管道)。要查看它们是如何工作的,请打开两个终端窗口。在一个,做

cd /tmp
mkfifo pipe
tail -f pipe

而在另一个

cd /tmp
echo "Hello" > pipe
echo "Bye" > pipe

对于实际问题,让您的应用程序写入 FIFO 并tail -f pipe > outputfile在后台使用将结果收集到outputfile.

于 2012-11-26T14:48:39.050 回答
1

您可以将/dev/stdout其用作输出文件,将其通过管道传输到 cat 并将标准输出附加到文件中>>

csession /dev/stdout | cat >>realfile

这不会覆盖,而是附加到现有文件。

于 2012-11-26T14:48:59.027 回答