关闭并重新打开管道文件描述符以便在c中写入

问题描述 投票:0回答:1

我有一个问题,如果我在写入文件描述符之后关闭文件描述符会发生什么(例如在管道fd之后fd [1]),然后再次打开它来写。是否会覆盖数据并且所有先前的数据都将消失,或者它将在第一次写入后从停止的终点继续写入?我使用系统调用open()和文件描述符,没有其他参数。

c
1个回答
1
投票

如果关闭管道的任一文件描述符,则永远不能重新打开它。没有名称可以重新打开它。即使使用/dev/fd文件系统,一旦关闭文件描述符,文件系统中的相应条目就会被删除 - 你被愚弄了。

如果您可能需要再次使用它,请勿关闭管道。

考虑是否在关闭之前复制管道;然后,您可以直接使用副本或将副本复制回原始(管道)文件描述符,但这是作弊;您实际上并未关闭对管道文件描述符的所有引用。 (请注意,由于关闭,管道另一端的进程将不会获得EOF指示 - 仍然有一个打开文件描述符引用管道。)

© www.soinside.com 2019 - 2024. All rights reserved.