[英]How to restrict access on a FILE from being used (write/read) by another process or function in C?
我目前在更新寫入 C 文件中的數據時遇到問題。 我在循環中創建了一個名為preview_data()的 function ,它不斷預覽寫入在INFOS.DAT上的所有文件。 我還創建了一個名為update_data()的function ,如果有新數據可用,它會修改 INFOS.DAT。 我正在使用fwrite()和fread()來修改文件。
但是,我注意到update_data()所做的更改沒有生效。 我懷疑這是因為INFOS.DAT 每秒都被preview_data()訪問。
現在我的問題是,如果文件被另一個進程訪問,如何限制文件被打開? 有沒有辦法知道它,以便我可以在我的程序上創建一個中斷條件? 謝謝你。
如果您使用相同的文件描述符打開和關閉文件,則可能會發生這種情況。 您可以通過在讀取或寫入文件時在文件描述符上放置“MUTEX”鎖來解決此問題。
因此,如果您正在讀取文件,則會有一個鎖,不允許同時寫入文件,反之亦然。
注意:請注意,您可能不得不對程序的性能做出妥協。
為了限制對文件的訪問,我們需要鎖定文件。 鎖定文件可以通過兩種方式完成:
1) flock
2) fcntl
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.