编程实现一个是进程向共享段写信息的例子。
时间: 2024-05-10 08:19:41 浏览: 94
以下是一个使用 POSIX 共享内存实现进程向共享段写信息的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define SHM_SIZE 1024
int main()
{
int shm_fd;
char *shm_ptr;
char message[] = "Hello, shared memory!";
// 创建共享内存段
shm_fd = shm_open("/my_shm", O_CREAT | O_RDWR, 0666);
if (shm_fd == -1) {
perror("shm_open");
exit(1);
}
// 设置共享内存段的大小
if (ftruncate(shm_fd, SHM_SIZE) == -1) {
perror("ftruncate");
exit(1);
}
// 将共享内存映射到进程地址空间中
shm_ptr = mmap(NULL, SHM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
if (shm_ptr == MAP_FAILED) {
perror("mmap");
exit(1);
}
// 向共享内存段写入数据
strcpy(shm_ptr, message);
// 解除共享内存映射
if (munmap(shm_ptr, SHM_SIZE) == -1) {
perror("munmap");
exit(1);
}
// 关闭共享内存段
if (close(shm_fd) == -1) {
perror("close");
exit(1);
}
return 0;
}
```
在这个例子中,创建了一个名为 `/my_shm` 的共享内存段,大小为 1024 字节。使用 `mmap` 将共享内存映射到进程地址空间中,并将一个字符串写入共享内存段中。最后解除共享内存映射,并关闭共享内存段。
阅读全文