0

我使用 c 套接字程序创建了一个 txt 文件(名为“output.txt”)。它已创建,但我无权打开该 txt 文件。两天前,当我执行我的程序时,我可以打开 output.txt 文件。为什么我现在打不开?

我的 output.txt 文件的权限是

-r----x--t 1 root root 12288 Oct 19 10:24 output.txt

创建它的代码:

  new_sockfd = accept(sockfd,(struct sockaddr *)&client_address, &client_len);
     if (new_sockfd==-1) { perror("Connection Not Accepted!!"); return(1);}
     else 
         {
           printf("client is connected\n");
           log=open("output.txt",O_CREAT|O_RDWR|O_APPEND,777);

           do
              { 
                x1=read(new_sockfd, buffer1, 1024);
                x2=write(log,buffer1,x1);
              }
           while (x1>0);
           close(log);   
         }

      close(new_sockfd);  
4

2 回答 2

2

777

那是十进制。将其更改为 0777(八进制)。

于 2013-10-19T05:22:37.680 回答
1

看起来你已经在 root 下创建了文件,但试图在普通用户帐户下读取,chmod 到 root 下的 0666

这是因为您在 open 函数中有不正确的标志,您必须将它们设置为 0777 或 0666,0 是强制性的

于 2013-10-19T05:23:36.080 回答