gpt4 book ai didi

c - 写一个文件并使其只读

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:05 25 4
gpt4 key购买 nike

我在Linux下用C写了一个数据库给学生。所以在输入我的数据并关闭程序后,数据将自动保存在文本文件中。我怎样才能使这个文件只读?我稍后会添加一个从文件中读取数据的函数,因此只有程序可以处理数据。任何打开该文件的用户都只能读取数据而无权更改文件中的数据。换句话说,我怎样才能使我保存的数据安全?这是一些代码:

void writeData(){
FILE * fpw;
fpw=fopen("database.txt","wb");
if(fpw==NULL){
printf("the file cannot be opened");
exit(1);
}
int i;
for(i=0;i<SIZE;i++){
fprintf(fpw,"%s, %s, %d, %s , %s;\n",
(db+i)->lastname,(db+i)->firstname,(db+i)->mNr, (db+i)->subject, (db+i)->nationality);
}
fclose(fpw);
}

我写了一个例子。这是代码:

#include <sys/stat.h>
#include <stdio.h>
int main(int argc, char** argv){
char mode[]="111";
int in=strtol(mode,0,8);
int ret_value=chmod("./file.csv",in);
if(ret_value!=0){
printf("failed to change mode");
}
}

但我希望只有程序具有读写权限。其余的必须只有阅读权限,包括我作为终端用户。怎么办?我想,我会尝试阅读有关 Setuid 的内容并使用它

最佳答案

使用chmod在 C 中更改文件模式。

#include <sys/stat.h>

int chmod(const char *path, mode_t mode);

以下示例为所有者、组和其他人设置读取权限。

#include <sys/stat.h>

const char *path;
...
chmod(path, S_IRUSR|S_IRGRP|S_IROTH);

如果要读取权限,使用stat。

#include <sys/stat.h>

int stat(const char * restrict path, struct stat * restrict buf);

关于c - 写一个文件并使其只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31322109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com