使用mmap实现进程间通信
来源:互联网 发布:咏春期权交易软件 编辑:程序博客网 时间:2024/05/18 00:14
#include <sys/types.h>#include <sys/mman.h>#include <err.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int main(void){const char str1[] = "string 1";const char str2[] = "string 2";int parpid = getpid(), childpid;int fd = -1;char *anon, *zero;if ((fd = open("/dev/zero", O_RDWR, 0)) == -1)err(1, "open");anon = (char*)mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED, -1, 0);zero = (char*)mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, 0);if (anon == MAP_FAILED || zero == MAP_FAILED)errx(1, "either mmap");strcpy(anon, str1);strcpy(zero, str1);printf("PID %d:\tanonymous %s, zero-backed %s\n", parpid, anon, zero);switch ((childpid = fork())) {case -1:err(1, "fork");case 0:childpid = getpid();printf("PID %d:\tanonymous %s, zero-backed %s\n", childpid, anon, zero);sleep(3);printf("PID %d:\tanonymous %s, zero-backed %s\n", childpid, anon, zero);munmap(anon, 4096);munmap(zero, 4096);close(fd);return EXIT_SUCCESS;}sleep(2);strcpy(anon, str2);strcpy(zero, str2);printf("PID %d:\tanonymous %s, zero-backed %s\n", parpid, anon, zero);munmap(anon, 4096);munmap(zero, 4096);close(fd);return EXIT_SUCCESS;}
0 0
- 使用mmap实现进程间通信
- Linux--mmap实现进程间通信
- 进程间通信-mmap
- Linux进程间通信 -- mmap函数的使用
- Linux进程共享通信 -- mmap实现
- 进程间通信之mmap共享内存
- linux系统编程:进程间通信-mmap
- 进程间通信(七)mmap
- linux 进程间通信之mmap
- mmap的使用之两个进程通过映射普通文件实现共享内存通信
- [转] linux下使用mmap实现进程间共享内存
- 进程通信----共享内存以及mmap函数实现共享内存
- 使用mmap和posix semaphores做进程间通信与同步
- Linux进程间通信(IPC)编程实践(六)共享内存的使用-mmap
- 进程通信--mmap内存共享
- 进程通信-共享内存-mmap()
- mmap实现进程间共享内存
- mmap实现进程通讯
- iOS国际化及应用内部实现国际化
- 5x8字符点阵的软件模拟
- android 解决APN问题
- iOS高级网络简介
- 使用批处理文件启动/关闭 oracle 11g 的相关服务
- 使用mmap实现进程间通信
- JavaScript跨域总结与解决办法
- LeetCode Rotate Image
- 菜鸟学python(3) 常见变量赋值
- bootstrap-switch使用实例
- spring_ajxa
- listview在scrollView中的冲突解决
- 机器学习&深度学习经典资料汇总
- 解决kernel编译时由于加入git管理导致的version magic的问题