簡體   English   中英

關閉並重新打開管道文件描述符以在C中寫入

[英]Closing and reopening piped file descriptors for writing in c

我有一個問題,如果我在寫入文件描述符后關閉文件描述符( 例如,在管道fd之后使用fd [1] ),然后再次打開文件描述符進行寫入,將會發生什么情況。 數據將被覆蓋並且之前的所有數據都將消失,還是從第一次寫入后停止的終點繼續寫入? 我將系統調用open()與文件描述符一起使用,而沒有其他參數。

如果關閉管道的任何一個文件描述符,則將永遠無法重新打開它。 沒有用於重新打開它的名稱。 即使使用/dev/fd文件系統,一旦關閉文件描述符,文件系統中的相應條目也將被刪除-您將被欺騙。

如果您可能需要再次使用它,請不要關閉管道。

在關閉之前,請考慮是否對管道進行復制; 然后,您可以直接使用重復項,也可以將重復項復制回原始(管道)文件描述符,但這是作弊行為; 您實際上並沒有關閉對管道文件描述符的所有引用。 (請注意,由於關閉,在管道另一端的進程將無法獲得EOF指示-仍然有一個打開的文件描述符引用該管道。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM