C-如何创建一个INT文件



我正在尝试创建一个共享文件,该文件必须是int。

int f;

但是,当我到达

if ((fstat(f, &stbuf) != 0) || (!S_ISREG(stbuf.st_mode)))

它给了我一个错误。该文件必须包含一个字符串,例如:

abcd

我的猜测是以下内容,但它不起作用:

int main() {
  int f;
  void *memoria = NULL;
  int tam;
  struct stat stbuf;
  char string[15] = {0};
  f = open("fichero.txt", O_RDWR, S_IRUSR);
  // ERROR IS HERE!!
  if ((fstat(f, &stbuf) != 0) || (!S_ISREG(stbuf.st_mode))) {
    printf("Error");
  }
  tam = stbuf.st_size;
  printf("%dn", tam);
  // Proyect the file
  memoria = mmap(0, tam, PROT_WRITE, MAP_SHARED, f, 0);
  // Copy the string into the file
  memcpy(memoria, "abcd", 5);
  munmap(memoria, tam);
  return 0;
}

我应该更改打开的参数吗?我究竟做错了什么?谢谢!

您需要使用O_CREAT模式在文件中创建文件。

f = open("fichero.txt", O_RDWR | O_CREAT, S_IRUSR);

您应该检查open()的错误:

if (f == -1) {
    perror("open");
    exit(1);
}

相关内容

  • 没有找到相关文章

最新更新