Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

linux共享内存

作者:冷空气来袭   发布日期:2025-10-14   浏览:87

#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define BUFFER_SIZE 1024

int main() {
    key_t key;
    int shmid;
    char *data;

    // 生成一个唯一的key值,用于标识共享内存段
    key = ftok("shmfile", 65); 

    // 创建共享内存段
    shmid = shmget(key, BUFFER_SIZE, 0666|IPC_CREAT);
    if (shmid == -1) {
        fprintf(stderr, "shmget failed\n");
        exit(EXIT_FAILURE);
    }

    // 将共享内存段连接到当前进程的地址空间
    data = shmat(shmid, (void *)0, 0);
    if (data == (char *)(-1)) {
        fprintf(stderr, "shmat failed\n");
        exit(EXIT_FAILURE);
    }

    // 写入数据到共享内存段
    strcpy(data, "Hello, Shared Memory!");

    printf("Data written to shared memory: %s\n", data);

    // 断开共享内存段与当前进程的连接
    if (shmdt(data) == -1) {
        fprintf(stderr, "shmdt failed\n");
        exit(EXIT_FAILURE);
    }

    // 删除共享内存段
    if (shmctl(shmid, IPC_RMID, NULL) == -1) {
        fprintf(stderr, "shmctl(IPC_RMID) failed\n");
        exit(EXIT_FAILURE);
    }

    return 0;
}

解释说明:

  1. 生成唯一键值

    • 使用 ftok 函数生成一个唯一的键值(key),该键值用于标识共享内存段。ftok 的参数是一个文件路径和一个项目 ID。
  2. 创建共享内存段

    • 使用 shmget 函数创建一个共享内存段,并返回一个共享内存标识符(shmid)。BUFFER_SIZE 是共享内存段的大小,0666 | IPC_CREAT 设置了权限并创建新的共享内存段。
  3. 连接共享内存段

    • 使用 shmat 函数将共享内存段连接到当前进程的地址空间,并返回指向共享内存段的指针(data)。
  4. 写入数据

    • 使用 strcpy 函数将字符串 "Hello, Shared Memory!" 写入共享内存段中。
  5. 断开连接

    • 使用 shmdt 函数断开共享内存段与当前进程的连接。
  6. 删除共享内存段

    • 使用 shmctl 函数删除共享内存段,确保资源被正确释放。

这段代码展示了如何在 Linux 系统中创建、写入和删除共享内存段。

上一篇:linux gz 解压

下一篇:linux $?

大家都在看

linux 发送邮件

linux长ping命令

linux关机命令行

linux重启oracle命令

linux把一个文件夹移动到另一个文件夹里

linux查看系统运行时间

linux搭建sftp

linux 重启网络命令

linux 追踪路由

查看linux版本信息

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站