簡體   English   中英

如何限制對文件的訪問被另一個進程或 C 中的 function 使用(寫入/讀取)?

[英]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

參考這個鏈接: https://gavv.github.io/articles/file-locks/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM