3

我在 Linux 中创建文件时遇到问题,它使我的文件受到写保护,我不知道为什么会这样。

void fileOperation::openFileWrite(char x, off_t s)
{
  int fd;
  char c[2] = {x};

  fd = open("/home/stud/txtFile", O_CREAT | O_WRONLY);  //open file
  if(fd == -1)
      cout << "can't open file" << endl;
  else
  {
      lseek(fd, s, SEEK_SET);//seek at first byte
      write(fd, (void*)&c, 2);//write to file
  }
  syncfs(fd);
  ::close(fd);
}
4

2 回答 2

5

您必须使用设置了写权限的附加参数(您的默认权限可能正在关闭写权限)

 fd = open("/home/stud/txtFile", O_CREAT | O_WRONLY, 0666);//open file

0666是一个八进制数,即6个中的每一个对应三个权限位

6 = rw
7 = rwx
于 2014-10-24T08:41:44.457 回答
1

你可能有一个限制性的umask. 该open调用将简单地尝试创建模式为 0666 的文件,但用户的 umask 通常会删除其中许多权限位。

于 2014-10-24T08:38:43.400 回答