#include #define BUFFER_SIZE 2048

int main()

{

pid_t pid;

int shmid;

char *shm_addr;

char flag[] = \"WROTE\";

char *buff;

/* 创建共享内存 */

if ((shmid = shmget(IPC_PRIVATE, BUFFER_SIZE, 0666)) < 0)

{

perror(\"shmget\");

exit(1);

}

else

{

printf(\"Create shared-memory: %d\\n\",shmid);

}

/* 显示共享内存情况 */

system(\"ipcs -m\");

pid = fork();

if (pid == -1)

{

perror(\"fork\");

exit(1);

}

else if (pid == 0) /* 子进程处理 */

{

/* 映射共享内存 */

if ((shm_addr = shmat(shmid, 0, 0)) == (void*)-1)

{

perror(\"Child: shmat\");

exit(1);

}

else

{

printf(\"Child: Attach shared-memory: %p\\n\", shm_addr);

}

system(\"ipcs -m\");

/* 通过检查在共享内存的头部是否有标志字符串“WROTE”来确认父进程已经向共享内存写入有效数据 */

while (strncmp(shm_addr, flag, strlen(flag)))

{

printf(\"Child: Wait for enable data...\\n\");

sleep(5);

}

/* 获取共享内存的有效数据并显示 */

strcpy(buff, shm_addr + strlen(flag));

printf(\"Child: Shared-memory :%s\\n\", buff);

/* 解除共享内存映射 */

if ((shmdt(shm_addr)) < 0)

{

perror(\"shmdt\");

exit(1);

}

else

{

printf(\"Child: Deattach shared-memory\\n\");

}

system(\"ipcs -m\");

/* 删除共享内存 */

if (shmctl(shmid, IPC_RMID, NULL) == -1)

{

perror(\"Child: shmctl(IPC_RMID)\\n\");

exit(1);

}

else

{

printf(\"Delete shared-memory\\n\");

}

system(\"ipcs -m\");

}

else /* 父进程处理 */

{

/* 映射共享内存 */

if ((shm_addr = shmat(shmid, 0, 0)) == (void*)-1)

{

perror(\"Parent: shmat\");

exit(1);

}

else

{

printf(\"Parent: Attach shared-memory: %p\\n\", shm_addr);

}

sleep(1);

printf(\"\\nInput some string:\\n\");

fgets(buff, BUFFER_SIZE, stdin);

strncpy(shm_addr + strlen(flag), buff, strlen(buff));

strncpy(shm_addr, flag, strlen(flag));

/* 解除共享内存映射 */

if ((shmdt(shm_addr)) < 0)

{

perror(\"Parent: shmdt\");

exit(1);

}

else

{

printf(\"Parent: Deattach shared-memory\\n\");

}

system(\"ipcs -m\");

waitpid(pid, NULL, 0);

printf(\"Finished\\n\");

}

exit(0);

}

linux查看共享内存文件,linux 共享内存相关推荐

  1. linux查看缓存的文件,linux – 如何查看缓冲和缓存的数据

    免费中由"buffers / cache"表示的内存分别是您的磁盘和文件系统缓存,Linux缓存以加速从磁盘读取数据,因为访问磁盘通常是一种反复访问数据的相当慢的方式.因此,它们被 ...

  2. linux查看usb设备文件,Linux下查看USB设备信息

    首先需要将usbfs挂载一下,然后才能查看. $ mount -t usbfs none /proc/bus/usb $ cat  /proc/bus/usb/devices 或者在文件(/etc/f ...

  3. linux查看usb设备文件,linux – 确定USB设备文件路径

    So which device file is used for USB? How can i indentify it? 您在/ sys /后面看到的主要是有关设备的配置/信息. / dev / b ...

  4. linux查看zip所有文件,linux 命令。不解压zip文件,能否查看这个zip里面有哪些文件?...

    1.运行"CMD",打开DOS控制台 2.压缩目录test及其子目录的文件内容 Wzzip test.zip test –r -P WINRAR A test.rar test – ...

  5. 查看服务器大文件,linux 查看服务器大文件

    linux 查看服务器大文件 内容精选 换一换 当创建文件系统后,您需要使用云服务器来挂载该文件系统,以实现多个云服务器共享使用文件系统的目的.本章节以Windows 2012版本操作系统为例进行NF ...

  6. linux查看和编辑文件,查看和编辑文件(Linux的快捷键和主要命令)

    查看和编辑文件(Linux的快捷键和主要命令) cat filename | more 这个命令用于查看一个被称为 "filename"的文本文件的内容,每次一页. "| ...

  7. linux查看和修改文件与目录的权限

    1.linux查看目录和文件权限 使用带"-l"选项的ls命令时,将以长格式显示文件或目录的详细信息,其中包括了该文件的权限和归属等参数.例如,执行如下操作列出当前目录下子目录和文 ...

  8. linux 查看目录下文件、查看文件具体内容、查看文件夹大小

    linux 查看目录下文件.查看文件具体内容 查看目录下文件 查看文件具体内容 查看文件夹大小 查看文件夹下各文件大小 查看目录下文件 ls 查看目录下所有文件(不包含隐藏文件) ls -a 查看目录 ...

  9. Linux C try 头文件,linux c 头文件

    //1.Linux中一些头文件的作用: #include //ANSI C.提供断言,assert(表达式) #include //GCC.GTK,GNOME的基础库,提供很多有用的函数,如有数据结构 ...

  10. linux查看远程服务器端口,linux下查看本机和远程服务器的端口是否连通的方法...

    linux下查看本机和远程服务器的端口是否连通的方法 如下所示: 1.ssh -v -p [端口号] [用户名]@[IP地址] 2.curl [IP地址]:[端口号] 以上这篇linux下查看本机和远 ...

最新文章

  1. notepad++是什么?用notepad++来编辑c语言代码
  2. HttpServletRequest的方法详细说明
  3. 教你如何用 lib-flexible 实现移动端H5页面适配
  4. 基于D3.js实现分类多标签的Tree型结构可视化
  5. java读取yaml数据_Java类读取Yaml内罐
  6. 新技能 get —— 如何校验 md5(windows)
  7. 可视化 —— 在线图形绘制
  8. mysql 5.1 1067,mysql服务1067错误多种解决方案汇总
  9. Windows开发之——局域网内搭建论坛
  10. 支持免费的PCB计算机辅助设计软件eagle
  11. linux刷windows phone,老机焕新生!Lumia 950XL也能跑Win10
  12. 对Win10和Linux双系统进行备份
  13. Oracle客户端安装教程(图文)
  14. 郑州大学计算机翟雨轩,郑州大学文件-20210331220732.doc-原创力文档
  15. ABAP ALV LVC模板
  16. 测试中常用的批处理命令
  17. 如何将数据从旧PC传输到新Mac
  18. java poi导出Excel表,合并单元格
  19. 十大工业物联网常用传感器,你用过哪些?
  20. 《好好学习》读书笔记心得感悟1400字

热门文章

  1. 中兴2618交换机的STP环网基本操作
  2. 鼠标没有唤醒计算机功能,怎么设置碰到鼠标电脑不会唤醒亮起来
  3. 《水墨青花》----徐志摩
  4. 微信,该文件已过期或已被清理
  5. 突然,我想恋爱了(一)
  6. 2023年度流行色出炉终于轮到火龙果和草莓熊制霸天下了 优漫动游
  7. 工程项目管理系统-----装修装饰行业的管理软件
  8. 【C语言】关于数组传参问题/首地址
  9. 根据身份证号回填信息
  10. Zabbix设置微信报警