消息队列

2015-6-26 chenhui 进程间通信

调用 int msgget(key_t key, int magflg) 来创建或得到一个消息队列,其功能和共享内存一致。 调用 int msgsnd(int msqid,const void *msg_ptr, size_t msg_sz, int msgflg) 把一个消息插入队列msg_ptr就是消息的开始地址;msg_sz 是消息大小(不包括消息类型)。 ...

阅读全文>>

评论(0) 浏览(191)

共享内存

2015-6-25 chenhui 进程间通信

共享内存允许不相关的进程访问同一片内存。 共享内存的原理很简单,即一个基于内存的文件,把他 mmap 到两个进程的进程地址空间,就实现了共享内存。 如果要深入了解共享内存的原理,请阅读:。本文只对共享内存的创建和映射做简单介绍。 共享内存的精髓在于 shmget 和 shmat,所以本文介绍这两个函数的原理。 如果要更深入...

阅读全文>>

评论(0) 浏览(201)

管道

2015-6-25 chenhui 进程间通信

通过内核实现的管道有两种:pipe 和 fifo(命名管道)。 pipe 在内核中对应的函数为 sys_pipe。 int sys_pipe(unsigned long __user *fildes) { int fd[2]; int error; error = do_pipe(fd); //执行真正的管道创建函数,创建成功后读管道和写...

阅读全文>>

评论(0) 浏览(206)

Copyright ©2015-2016 freehui All rights reserved