使用open()创建文件但没有权限在C中修改它

时间:2013-12-22 16:57:01

标签: c file-permissions

我正在用C语言创建一个文本文件

fd = open("results.txt",O_CREAT|O_RDWR,S_IROTH);
    if (fd<0){
        perror("open error");
        abort();
    }
    write(fd,msg,strlen(msg)+1);

但是当我试图在其中写下其他内容时,我没有权限。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

使用fd=open("results.txt",O_CREAT|O_RDWR,0777);

而不是

fd = open("results.txt",O_CREAT|O_RDWR,S_IROTH);

答案 1 :(得分:1)

标志中应该有问题,因为你正在创建文件,你正在使用标志     

O_CREAT
所以现在你需要指定访问模式,如手册页中所述。你指定了     
S_IROTH
所以你只为其他人做了它。因此,当你再次打开它时,你不能写。 所以你也应该定义写模式,也为用户等读取。     
S_IRUSR | S_IROTH | S_IWUSR
有关详细信息,请参见手册页。