首頁>Club>
8
回覆列表
  • 1 # 運維小鄒

    個人感覺是可以的,一個檔案一邊在寫,另一個程式在讀,完全不影響。最典型的用tail檢視日誌檔案不就是一個程式寫一個程式讀。

  • 2 # linux基礎學習

    這個問題需要考慮兩個問題,一個是cp程序寫檔案的時候有沒有獲取讀鎖,另一個是讀程序是以阻塞方式還是非阻塞方式開啟檔案。

    如果cp程序獲取了讀鎖,而讀程序是以非阻塞方式開啟檔案,那麼是不可能讀取成功的;

    如果讀程序以阻塞方式開啟檔案,那麼會一直等待直到cp程序釋放讀鎖,最終會讀取成功;

    如果cp程序沒有獲取讀鎖,讀程序以非阻塞方式開啟,如果讀程序比寫程序快,那就會讀取失敗,如果讀程序比寫程序慢,那還是有機會讀取成功的。

    如果讀程序以阻塞方式開啟檔案,只要沒遇到檔案結束符EOF,那麼讀程序會邊讀邊等待,直到cp程序完成寫入,讀程序也就完成讀取。

    綜上所述,如果你的讀程序是以阻塞方式讀取檔案,那麼最終是一定會讀取成功的,如果是以非阻塞方式讀取檔案,那麼可能會面臨讀取失敗的風險。

    你可以做一個簡單的實驗驗證一下,用ctrl-z先將cp寫程序放入bash後臺暫停,然後看看讀程序的反應,然後再將寫程序繼續執行,再看看讀程序反應

  • 中秋節和大豐收的關聯?
  • 烹飪中的經典菜品“水煮桂花魚”是如何製作的?