我在c写了一个密码程序。并且我使用一些加密技术将密码保存在文本文件中,并使用解密技术从文件中检索旧密码,以便用户无法看到密码。当然,这可能不是有效的方法,因为用户有机会删除文本文件。
但我仍然希望使用我的密码来锁定(保护)文件。我在google上搜索过我发现perl可以用来锁定文件。问题是c可能吗?我们在perl中有像flock这样的函数吗?或者建议我一些有助于在c.becuase中开发文件锁定功能的函数。人们可能会说我们有c#和许多东西来锁定文件以及为什么你坚持使用c?但我喜欢挑战这些东西。所以请让我知道如果我需要学习的东西。提前谢谢你。
答案 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 Explorer或Handle关闭程序下的句柄。所以即使你能做到,其他人也可以撤消它。