我有一个问题,如果我在写入文件描述符后关闭文件描述符会发生什么(例如 fd [1] ,在管道 fd ),然后再打开它写。是否会覆盖数据并且所有先前的数据都将消失,或者它将在第一次写入后从停止的终点继续写入? 我使用系统调用open()和文件描述符,没有其他参数。
答案 0 :(得分:1)
如果关闭管道的任一文件描述符,则永远不能重新打开它。没有名称可以重新打开它。即使使用/dev/fd
文件系统,一旦关闭文件描述符,文件系统中的相应条目也将被删除 - 您已被冻结。
如果您可能需要再次使用,请不要关闭管道。
考虑是否在关闭之前复制管道;然后,您可以直接使用副本或将副本复制回原始(管道)文件描述符,但这是作弊;您实际上并未关闭对管道文件描述符的所有引用。 (请注意,由于关闭,管道另一端的进程将不会获得EOF指示 - 仍然有一个打开的文件描述符引用管道。)