是否可以保护c中的文件?

时间:2011-07-29 04:40:38

标签: c

我在c写了一个密码程序。并且我使用一些加密技术将密码保存在文本文件中,并使用解密技术从文件中检索旧密码,以便用户无法看到密码。当然,这可能不是有效的方法,因为用户有机会删除文本文件。

但我仍然希望使用我的密码来锁定(保护)文件。我在google上搜索过我发现perl可以用来锁定文件。问题是c可能吗?我们在perl中有像flock这样的函数吗?或者建议我一些有助于在c.becuase中开发文件锁定功能的函数。人们可能会说我们有c#和许多东西来锁定文件以及为什么你坚持使用c?但我喜欢挑战这些东西。所以请让我知道如果我需要学习的东西。提前谢谢你。

3 个答案:

答案 0 :(得分:2)

您可以在POSIX系统上使用fcntl()以及命令参数的F_SETLK值,然后在{{F_WRLCK中设置struct flock(即,排除锁定) 1}}数据成员l_type

例如(添加自己的错误检测机制):

#include <fcntl.h>
#include <unistd.h>

struct flock fl;
int file_descriptor;
int file_length;

fd = open("my_password_file", O_RDWR);

//... get the length of the file and set the variable file_length

fl.l_type = F_WRLCK;
fl.l_whence = SEEK_SET;
fl.l_start = 0;
fl.l_len = file_length;

//set the exclusive-lock on the file
fcntl(fd, F_SETLK, &fl);

答案 1 :(得分:1)

http://linux.die.net/man/2/flock

您想通过flock实现什么目标? flock或任何其他类型的文件锁定不会阻止用户删除该文件。在程序运行时,他可能无法执行此操作,但是一旦程序终止,所有锁都将被释放。

flock用于在某种I / O操作期间获取某种访问文件的独占性。

HTH

马里奥

答案 2 :(得分:0)

在Windows上,我可以使用Process ExplorerHandle关闭程序下的句柄。所以即使你能做到,其他人也可以撤消它。