{eval=Array;=+count(Array);}
這個問題需要考慮兩個問題,一個是cp進程寫文件的時候有沒有獲取讀鎖,另一個是讀進程是以阻塞方式還是非阻塞方式打開文件。
如果cp進程獲取了讀鎖,而讀進程是以非阻塞方式打開文件,那么是不可能讀取成功的;
如果讀進程以阻塞方式打開文件,那么會一直等待直到cp進程釋放讀鎖,最終會讀取成功;
如果cp進程沒有獲取讀鎖,讀進程以非阻塞方式打開,如果讀進程比寫進程快,那就會讀取失敗,如果讀進程比寫進程慢,那還是有機會讀取成功的。
如果讀進程以阻塞方式打開文件,只要沒遇到文件結束符EOF,那么讀進程會邊讀邊等待,直到cp進程完成寫入,讀進程也就完成讀取。
綜上所述,如果你的讀進程是以阻塞方式讀取文件,那么最終是一定會讀取成功的,如果是以非阻塞方式讀取文件,那么可能會面臨讀取失敗的風險。
你可以做一個簡單的實驗驗證一下,用ctrl-z先將cp寫進程放入bash后臺暫停,然后看看讀進程的反應,然后再將寫進程繼續運行,再看看讀進程反應
0
回答0
回答0
回答0
回答0
回答1
回答0
回答2
回答0
回答0
回答