Linux下的C语言编程——共享内存及有名管道的使用
2016-11-27 20:54
369 查看
共享内存的使用
char * name = “/dev/shm/myshm”;设置路径
Key = ftok(name,0);
shm_id = shmget(key,4096*N,shmflg)
创建共享内存
P_map = shmat(shm_id,NULL,0);映射共享内存
Shmdt(p_map);
解除映射
Shmctl(shm_id,IPC_RMID,NULL)释放内存(所有进程结束)
有名管道的使用
创建有名管道
#define FIFO
“/tmp/2”
Unlink(FIFO) unlink()会删除参数pathname指定的文件,删除目录相并减少一个连接数,如果连接数为0,并且没有任何进程打开该文件,该文件内容才能被真正的删除,但是若有进程程打开了文件,则文件暂时不被删除,直到所有打开该文件的进程都结束才会被删除
Mkfifo(FIFO,0666);
打开管道
fd = open(FIFO,O_CREAT|O_NONBLOCK,0)非阻塞方式打开
fd = open(FIFO,O_CREAT|O_NONBLOCK,0)
阻塞方式打开
读写操作
unlink(FIFO);
共享内存的使用
char * name = “/dev/shm/myshm”;设置路径
Key = ftok(name,0);
shm_id = shmget(key,4096*N,shmflg)
创建共享内存
P_map = shmat(shm_id,NULL,0);映射共享内存
Shmdt(p_map);
解除映射
Shmctl(shm_id,IPC_RMID,NULL)释放内存(所有进程结束)
有名管道的使用
创建有名管道
#define FIFO
“/tmp/2”
Unlink(FIFO) unlink()会删除参数pathname指定的文件,删除目录相并减少一个连接数,如果连接数为0,并且没有任何进程打开该文件,该文件内容才能被真正的删除,但是若有进程程打开了文件,则文件暂时不被删除,直到所有打开该文件的进程都结束才会被删除
Mkfifo(FIFO,0666);
打开管道
fd = open(FIFO,O_CREAT|O_NONBLOCK,0)非阻塞方式打开
fd = open(FIFO,O_CREAT|O_NONBLOCK,0)
阻塞方式打开
读写操作
unlink(FIFO);
相关文章推荐
- Linux初学,利用共享内存,有名管道,select实现两个用户之间的自由对话。
- linux下c编程系统调用之有名管道FIFO函数的使用及案例
- linux基础编程 共享内存 使用内存映射接口mmap系统调用 blog.csdn.net/ghostyu/article/details/7736733
- Linux进程间通信(IPC)编程实践(七)共享内存的使用-System V共享内存(API)
- linux编程之共享内存、消息队列、管道
- Linux进程间通信(IPC)编程实践(六)共享内存的使用-mmap
- 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)
- Linux进程间通信(IPC)编程实践(八)共享内存的使用-POSIX 共享内存(API)
- [Linux管道和IPC]使用信号量和共享内存进行父子进程通信
- Linux网络编程--使用epoll,共享内存技术实现高性能的聊天室程序
- Linux系统编程:fifo有名管道的使用
- linux基础编程 共享内存 使用内存映射接口mmap系统调用
- Linux下通过共享内存进行进程间通信,进程间同步使用信号量来实现
- linux操作系统编程——共享内存的读写(采用信号机制进行同步互斥)
- Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
- linux 共享内存的使用
- linux下C语言编程7-信号量与共享内存
- linux基础编程 共享内存 通过消息队列实现同步 shmget
- linux操作系统编程——共享内存读写(采用信号量进行同步互斥)
- UNIX/LINUX编程学习之进程通信--共享内存