q1)我可以检查我是否做了一个gzip -c文件| encryption(一些参数)
a)gzip是否一行一行地打印输出,并将其传送给encryptionfunction或
b)gzip将会执行第一个,那么输出将一次全部input到encryption函数中?
================================================== ==
q2)将执行gzip | encryption有更好的性能考虑,然后gzip,然后encryption
问候,Noob
Gzip是一个流式压缩/解压缩器。 所以(对于足够大的输入),压缩器/解压缩器在看到整个输入之前开始写输出。
这是gzip压缩用于HTTP压缩的原因之一。 发件人可以在生成内容的同时进行压缩; 收件人可以解压缩内容的第一部分,而仍然收到其余部分。
Gzip不能“逐行”工作,因为它不知道一行是什么。 但它确实可以“逐块”地工作,压缩器定义了块的大小。
“表演”一词太模糊,而且太复杂的地方给出肯定或否定的答案。
用gzip -c file | encrypt
gzip -c file | encrypt
,为一个足够大的文件,将会看到encrypt
和gzip
并行工作。 也就是说, 在 gzip
压缩文件的最后一个块之前 , encrypt
将会加密第一个压缩块。
管道缓冲区的大小取决于实现。 在SunOS下,它是4kB。 那就是: gunzip < file.gz | encrypt
gunzip < file.gz | encrypt
将移动4k块。 再次,这取决于操作系统。 CygWIN可能表现完全不同。
我应该补充说,这是在man 7 pipe
。 搜索PIPE_BUF 。