随笔分类 - linux进程通讯
摘要:通用线程:POSIX 线程详解,第 3 部分使用条件变量提高效率Daniel Robbins, 总裁兼 CEO, Gentoo Technologies, Inc.简介:本文是 POSIX 线程三部曲系列的最后一部分,Daniel 将详细讨论如何使用条件变量。条件变量是 POSIX 线程结构,可以让您在遇到某些条件时“唤醒”线程。可以将它们看作是一种线程安全的信号发送。Daniel 使用目前您所学到的知识实现了一个多线程工作组应用程序,本文将围绕着这一示例而进行讨论。条件变量详解在 上一篇文章结束时,我描述了一个比较特殊的难题:如果线程正在等待某个特定条件发生,它应该如何处理这种情况?它可以重
阅读全文
摘要:System V IPC分为三种:System V消息队列System V信号量System V共享内存区这三种类型的IPC使用key_t值做为它们的名字。key_t这个数据类型在有定义,通常是一个至少32位的整数。我们通常使用ftok()函数(可以如此记忆:file to key)把一个已存在的路径名和一个整数标识符转换成一个key_t值,称为IPC键。(当然,我们也可以不用ftok函数来生成该键,指定一个整数也是可以的,当然你需要考虑键的正负问题)。看下ftok的声明:1#include 2/* Generates key for System V style IPC. */3key_t
阅读全文
摘要:linux目录(?)[+]概述函数接口使用相关命令行接口概述:消息队列是linux下进程间通信的一种方式,一般用于传送少量数据,如果大量数据需要在进程间共享,则可以用共享内存。函数接口使用:linux下提供了以下几个接口,用于消息队列的使用,使用一般过程如下:1. 调用ftok接口产生一个key. 使用ftok的好处是,访问同一个消息队列的不同进程可以通过同一个文件访问相同的队列. 另外,如果文件被删除,即使重新产生后内容一模一样,仍然可能产生不同的key ,因为文件的inode与key值的产生有关。2. 调用msgget(使用key作为参数)产生一个队列3. 进程可以用msgsnd发送消息到
阅读全文
摘要:ftok()#include#include函数原型:key_tftok(constchar*pathname,intproj_id);参数:pathname就是你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。返回值:成功时候返回key_t类型的key值,失败返回-1msgget#include#include#include函数原型:intmsgget(key_tkey,intmsgflg);函数描述:建立消息队列参数:msgget()函数的第一个参数是消息队列对象的关键字(key),函数将它与已有的消息队列对象的关键字进行
阅读全文
摘要:在计算机科学中,远程过程调用RPC是一种进程间的通讯,允许一个计算机程序向另外一个地址空间(通常是共享网络中的另一台计算机)申请服务(使得特定程序在另一台计算机上执行),而无需程序员明确写明该远程调用的实现细节。也就是说,本质上程序员只要写出同样的代码,不管该特定程序是在本地还是在远程。当申请服务的计算机程序使用了面向对象的编程原则时,RPC被称为远程调用或远程方法调用。许多不同的技术(通常不兼容)可以用来实现RPC。历史起源在早期的ARPANET文档中,将网络操作当作远程调用的想法,至少可以追朔到20世纪80年代。该词的提出归功于Bruce Jay Nelson。RPC第一次商务上的应用之一
阅读全文
摘要:portmap进程的主要功能是把RPC程序号转化为Internet的端口号。当一个RPC服务器启动时,会选择一个空闲的端口号并在上面监听(每次启动后的端口号各不相同),同时它作为一个可用的服务会在portmap进程注册。一个RPC服务器对应惟一一个RPC程序号,RPC服务器告诉portmap进程它在哪个端口号上监听连接请求和为哪个RPC程序号提供服务。经过这个过程,portmap进程就知道了每一个已注册的RPC服务器所用的Internet端口号,而且还知道哪个程序号在这个端口上是可用的。portmap进程维护着一张RPC程序号到Internet端口号之间的映射表,它的字段包括程序号、版本号、所
阅读全文