C语言创建一个共享内存"shm1",读取stm32.json文件,将文件写入共享内存
时间: 2024-02-03 12:15:00 浏览: 93
用C语言实现将一个文件读入内存中
5星 · 资源好评率100%
以下是一个示例程序,可以创建共享内存“shm1”,并将文件“stm32.json”写入该共享内存中。
```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string.h>
#define SHM_SIZE 1024
int main() {
key_t key = ftok(".", 's'); // 生成共享内存的key
int shmid = shmget(key, SHM_SIZE, IPC_CREAT | 0666); // 创建共享内存
if (shmid == -1) {
perror("shmget");
exit(EXIT_FAILURE);
}
char *shm = (char *) shmat(shmid, NULL, 0); // 连接共享内存
if (shm == (char *) -1) {
perror("shmat");
exit(EXIT_FAILURE);
}
FILE *fp = fopen("stm32.json", "r"); // 打开文件
if (fp == NULL) {
perror("fopen");
exit(EXIT_FAILURE);
}
char buf[SHM_SIZE];
memset(buf, 0, SHM_SIZE);
fread(buf, sizeof(char), SHM_SIZE, fp); // 读取文件内容
strncpy(shm, buf, SHM_SIZE); // 写入共享内存
fclose(fp); // 关闭文件
if (shmdt(shm) == -1) { // 断开共享内存连接
perror("shmdt");
exit(EXIT_FAILURE);
}
return 0;
}
```
需要注意的是,共享内存的大小应该足够存储文件内容。在本例中,我使用了1024字节的共享内存。如果文件大小超过了共享内存的大小,就需要进行分块读取和写入。
阅读全文