临时文件与管道有何不同?

临时文件与管道有何不同?

当一个人将数据(例如stdout)发送到临时文件时,很可能会对该数据执行某些操作(临时文件将用于stdin某些进程),然后临时文件将被删除。

管道是一种变体特殊文件, 这样可以一起发出命令;将一个程序的输出作为另一个程序的输入。

通常,常规管道将在进程结束后立即销毁,但命名管道(通常命名为“FIFO”,不一定 100% 准确)将在进程结束后保持活动状态,直到某个点。

我的问题

临时文件可能会在使用后被删除,而命名管道不会,但是临时文件和一般的管道(或者至少是匿名管道)之间有什么区别?

更新

我错误地认为“临时文件”是一个特殊文件,它不是;这是一个普通文件被不同地使用;我想说管道的不同之处在于它被定义为特殊文件,并且具有单一的狭隘目的(链接),而临时文件除了链接之外可能还有其他用途,但是,可能有一种更“全面”的方式来描述差异。

答案1

命名管道可以是临时的,就像常规文件(或网络连接或提供数据“句柄”的任何其他内容)可以是临时的一样,即它可以由脚本设置以促进某种处理,然后在脚本退出之前删除。那么它将是一个“临时(命名)管道”。

命名管道是一个文件,因此有人可能会认为命名管道(实际上是临时的)是一个临时文件。

然而,当人们提到“文件”时,几乎总是指“常规文件”(即某种描述的文档),而命名管道是不是一个常规文件。

shell 中的管道用于|提供从一个实用程序到另一个实用程序的数据流,它是临时的,因为当使用该管道且不再需要该管道时,shell 将释放与其相关的任何资源。

最后,管道(命名和未命名)和常规文件有不同的应用,应该清楚什么时候使用常规文件存储临时数据,什么时候使用命名管道将数据传递给另一个进程。

相关内容