ChinaUnix.net
相关文章推荐:

进程间共享内存(posix)

三、posix共享内存函数 posix共享内存区涉及两个步骤: 1、指定一个名字参数调用shm_open,以创建一个新的共享内存区对象或打开一个以存在的共享内存区对象。 2、调用mmap把这个共享内存区映射到调用进程的地址空间。传递给shm_open的名字参数随后由希望共享该内存区的任何其他进程使用。 5. 名称:: shm_open 功能: 打开或创建一个共享内存区 头文件: #include 函数原形: int shm_open(const char *name,int oflag,mode_t ...

by shage100 - Linux文档专区 - 2008-04-16 09:42:38 阅读(499) 回复(0)

相关讨论

一、什么是共享内存区 共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率。 共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可以把同一段共...

by shage100 - Linux文档专区 - 2008-04-16 09:42:00 阅读(497) 回复(0)

五、共享内存区的写入和读出 上面我们介绍了mmap函数,下面我们就可以通过这些函数,把进程映射到共享内存区。 然后我们就可以通过共享内存区进行进程间通信了。 下面是共享内存区写入的例子: /*shm_write.h写入/读出共享内存区*/ #include #include #include #include int main(int argc,char **argv) { int shm_id; struct stat buf; char *ptr; if(argc!=2) { printf(“usage:shm_open \n”); ...

by 湖光倒影 - Linux文档专区 - 2007-05-13 22:50:38 阅读(665) 回复(0)

三、posix共享内存函数 posix共享内存区涉及两个步骤: 1、指定一个名字参数调用shm_open,以创建一个新的共享内存区对象或打开一个以存在的共享内存区对象。 2、调用mmap把这个共享内存区映射到调用进程的地址空间。传递给shm_open的名字参数随后由希望共享该内存区的任何其他进程使用。 5. 名称:: shm_open 功能: 打开或创建一个共享内存区 头文件: #include 函数原形: int shm_open(const char *name,int oflag,mode_t ...

by 湖光倒影 - Linux文档专区 - 2007-05-13 22:47:54 阅读(549) 回复(0)

一、什么是共享内存区 共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率。 共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可以把同一段共...

by 湖光倒影 - Linux文档专区 - 2007-05-13 22:41:17 阅读(564) 回复(0)

我在shm_open的时候,open的文件名称为:/tmp/.posix_shm 但是返回的fd为-1,失败,后来文件名称改为posix_shm,也微是说不再是带路径了,就没问题了 系统是RedHat AS4, gcc 3.23 原来本意是想在/tmp目录下创建这个文件的,因为Richard Stevens的UNIX网络编程第二卷里也有这样的例子,然后还可以观察这个文件的各种信息。 但是实际情况是这么做无法成功,我把文件名称改为不带路径后就ok了,当然,在unix网络编程第二卷中的第...

by sdeven.lee - C/C++ - 2006-04-01 20:11:22 阅读(1526) 回复(6)

请问posix共享内存 与 使用mmap映射普通文件创建的共享内存有什么区别呢 fd = shm_open(filename, O_RDWR | O_CREAT | O_EXCL, 0644); ptr = mmap(NULL, size, PROT_READ | PROT_WRITE,MAP_SHARED, fd, 0); 与 fd = open(mapfilename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); ptr = mmap(0, filesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); 这两种有什么区别呢 [ 本帖最后由 shared_memory 于 2008-12-30 22:37 编辑 ]

by shared_memory - C/C++ - 2008-12-31 06:31:33 阅读(1828) 回复(7)

共享内存 Linux的2.2.x内核支持多种共享内存方式,如mmap()系统调用,posix共享 内存,以及系统V共享内存。 posix共享内存 两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B 各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更 新,反之亦然。 共享内存为在多个进程之间共享和传递数据提供了一种有效的方式,但是 其并未提供同步机制。由于多个进...

by pmdxx - Linux文档专区 - 2008-08-16 18:08:02 阅读(993) 回复(0)

一、什么是条件变量 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到�程厥馇榭龇⑸埂MǔL跫淞亢突コ馑笔褂谩� 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。 条件的检测是在互斥锁的保护下进行的...

by shage100 - Linux文档专区 - 2008-04-16 09:40:14 阅读(493) 回复(0)

一、什么是条件变量 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到�程厥馇榭龇⑸埂MǔL跫淞亢突コ馑笔褂谩� 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。 条件的检测是在互斥锁的保护下进行的...

by 湖光倒影 - Linux文档专区 - 2007-04-19 22:30:44 阅读(695) 回复(0)

5. 名称:: sem_wait/sem_trywait 功能: 等待共享资源 头文件: #include 函数原形: int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem); 参数: sem 指向信号灯的指针 返回值: 若成功则返回0,否则返回-1。 我们可以用sem_wait来申请共享资源,sem_wait函数可以测试所指定信号灯的值,如果该值大于0,那就将它减1并立即返回。我们就可以使用申请来的共享资源了。如果该值等于0,调用线程就被进入睡...

by shage100 - Linux文档专区 - 2008-04-16 09:39:38 阅读(408) 回复(0)