2010-09-20 34 views

回答

6

不,從當前正在寫入的文件讀取不會中斷寫入過程。但是,您所做的副本將不完整,因爲您顯然無法複製尚未寫入的部分。只有第一個文件會獲得後續寫入,而不是副本,所以如果您想要整個文件,請等到寫入完成。

+0

是的。您不會通過讀取文件來中斷寫入過程。如果你能這樣做,那麼在每個編寫世界可讀文件的程序(例如,想到/ bin/passwd)中都會出現拒絕服務漏洞。 – MarkR 2010-09-20 13:04:49

1

除非第二個進程使用與創建文件的進程相同的打開文件描述關聯的文件描述符,否則不會有問題。如果文件描述符確實共享相同的打開文件描述,則讀取過程將移動文件位置(如同寫入過程一樣),導致混淆。但是,這要求進程具有打開文件的共同祖先(例如,複製程序由創建者分出)。根據您的描述,我認爲情況不太可能如此。

您的複製過程可以按照tail -f的方式進行,並讀取第一個EOF,然後在有更多數據可用時重複暫停和重新讀取,重複直到被告知停止,或者它可以確定文件已完成。如果它無法告訴文件何時完成,那麼你必須殺死它(中斷,或更糟)。

1

根據您的操作的語義應該是什麼,鏈接可能是您需要的。檢查符號鏈接和硬鏈接的行爲。其中一個可能正是你想要的。

相關問題