假设一个应用程序打开用于写入,一个文件,它是一个 FIFO,有东西正在“监听”,然后,这个“监听器”关闭;如果应用程序尝试写入它,应用程序将收到损坏的管道错误。没关系,但我想知道如果手柄存在重复使用的风险因此存在写入不再应有的句柄的风险。因此问题是:损坏的 FIFO 句柄的持久性如何?应用程序可以依靠损坏的管道错误多长时间才能知道 FIFO 的另一端已关闭?或者是否可以保证该句柄在应用程序的整个生命周期内永远不会被重用,除非它已明确关闭它?
答案1
文件描述符将继续与 open 调用中使用的文件或 FIFO 关联,直到它被关闭(通过调用close
或dup2
,或进程退出等)。即使与打开的文件描述符对应的文件或 FIFO 被删除(如这个问题)并创建了另一个同名文件,只要文件描述符保持打开状态,您仍然可以对原始文件进行 I/O。此外,不存在会导致 FIFO 由于不活动而关闭的超时。