如何判斷文件是否在C中打開?我認爲更多的技術問題是如何檢索對現有文件的引用數量,並確定該信息是否可以安全地打開。如何判斷一個文件是否在C上的其他地方打開?
我正在實施的想法是一個文件隊列。你轉儲一些文件,我的代碼處理這些文件。我不想在生產者關閉文件描述符之前開始處理。
一切都在linux中完成。
感謝, Chenz
如何判斷文件是否在C中打開?我認爲更多的技術問題是如何檢索對現有文件的引用數量,並確定該信息是否可以安全地打開。如何判斷一個文件是否在C上的其他地方打開?
我正在實施的想法是一個文件隊列。你轉儲一些文件,我的代碼處理這些文件。我不想在生產者關閉文件描述符之前開始處理。
一切都在linux中完成。
感謝, Chenz
挖掘出這些信息被大量的工作(你必須尋找thorugh的/ proc/*/FD 你會更好與任何的:
C有一個文件處理設施,但沒有太多用於獲取關於它們的信息。在便攜式C中,你可以做的唯一的事情就是試圖以所需的方式打開文件,看看它是否有效。
由於variuos的原因,您通常不能那麼做(例如,您不能說該文件是否與另一個用戶打開)。
如果你可以控制打開文件的過程和您嘗試通過鎖定文件,以避免衝突(也有爲了在Linux上許多圖書館做)
使用lsof命令。 (列表打開的文件)。
如果你在控制生產者和消費者,你可以使用flock()的lockf()來鎖定文件。
存在於大多數發行版lsof的命令,這顯示當前打開的所有文件,你可以,如果你的文件在同一目錄中還是有一些識別的名稱模式ofcourse grep的輸出。
我得出的結論是,第二個建議是對我的情況最好的。謝謝! – 2009-07-06 14:24:48