⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 write.c

📁 这个是学习嵌入式开发的重要例子
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <sys/mman.h>#include <fcntl.h>#define BUFFER_SIZE	32typedef struct _human{  unsigned long id;  unsigned long weight;  unsigned long length;  unsigned long married;  char name[BUFFER_SIZE];} human_t;int main(int argc, char **argv){  int fd;  if (argc < 2)  {    fprintf(stdout, "Usage: %s <filename>\n", argv[0]);    exit(1);  }  if ((fd = open(argv[1], O_RDWR | O_CREAT | O_EXCL, 0644)) < 0)  {    if (errno != EEXIST)    {      fprintf(stderr, "open() failed: %s", strerror(errno));      exit(1);    }    else    {      if ((fd = open(argv[1], O_RDWR)) < 0)      {	fprintf(stderr, "open() failed: %s", strerror(errno));	exit(1);      }    }  }  lseek(fd, 30 * sizeof(human_t), SEEK_SET);  write(fd, "", 1);  human_t *h;  if ((h = mmap(NULL, 30 * sizeof(human_t), PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED)  {    fprintf(stderr, "mmap() failed: %s\n", strerror(errno));    exit(1);  }  fprintf(stdout, "mmap() successed.\n");  close(fd);  fprintf(stdout, "closed file.\n");  int i;  for (i = 0; i < 30; i++)  {    (h + i)->id = i;    (h + i)->weight = 80 + i;    (h + i)->length = 180 + i;    //memcpy((h + i)->name, "Ligen", strlen("Ligen"));    snprintf((h + i)->name, BUFFER_SIZE, "Ligen %d", i);    (h + i)->married = 0;  }  fprintf(stdout, "write infomation to mapped area.\n");  for (;;)  {  }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -