[英]How do I know if a C program will written on Linux will work elsewhere
[英]How can I tell if a file is open elsewhere in C on Linux?
如何判斷文件是否在C中打開? 我認為更技術性的問題是如何檢索對現有文件的引用數量,並確定是否可以安全打開該信息。
我正在實現的想法是文件隊列。 你轉儲一些文件,我的代碼處理文件。 在生產者關閉文件描述符之前,我不想開始處理。
一切都在linux中完成。
謝謝,陳茲
挖掘這些信息是很多工作(你必須搜索thorugh / proc / * / fd你最好用以下任何一個:
我不認為在純C中有任何方法可以做到這一點(它不會是跨平台的)。
如果您提前知道正在使用哪些文件,則可以使用inotify在打開時收到通知。
C具有處理文件的功能,但對於獲取有關它們的信息並不多。 在便攜式C中,您唯一能做的就是嘗試以所需的方式打開文件,看看它是否有效。
通常你不能出於variuos的原因(例如,你不能說文件是否與其他用戶一起打開)。
如果你可以控制打開文件的進程,你試圖通過鎖定文件來避免沖突(linux上有很多庫就可以了)
使用lsof命令。 (列出打開的文件)。
如果你同時控制生產者和消費者,你可以使用flock()的lockf()來鎖定文件。
在大多數發行版上都有lsof命令,它顯示了所有當前打開的文件,如果你的文件在同一個目錄中或者有一些可識別的名稱模式,你可以使用grep它的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.