如何在读取文件时阻止文件(通过 fopen 或在 linux 中打开),以防止在读取过程中进行任何修改?
我有: 1 个包含数据的文件;我想在我的函数中从中读取数据,所以我使用 fopen():
FILE *file = fopen(文件名, "r"); 现在我需要一些东西来阻止我的文件 - 任何(或只有当前用户的变体)另一个进程不能有任何访问权限(或只修改它作为变体)直到我的功能允许他们这样做强>
我想,我可以通过为它们设置 chmod 标志并在下类后将它们重新设置来做到这一点; 或者使用带有特殊标志参数的 open() 函数,但这是不可取的,因为我想在函数中使用 fgets();
有没有具体的例子?
最佳答案
是的,您可以使用 flock去做这个。但是,由于您想使用 fopen
而不是 open
打开文件,因此您需要先使用 fileno 获取文件描述符。 .例如:
FILE* f = fopen(...);
int fd = fileno(f);
// flock should return zero on success
flock(fd, LOCK_EX);
这会放置一个独占锁 - 如果您想要一个共享锁,请将 LOCK_EX
更改为 LOCK_SH
。
关于c - 如何在阅读(fopen)文件时阻止文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26313856/