[code]
(1)semcreate.c /创建一个信号量集/
#include
by surpassgood - Linux环境编程 - 2013-07-21 16:59:49 阅读(994) 回复(0)
1、消息队列的基本概念 消息队列就是一个消息的链表。有足够写权限的进程可往队列中放置消息,有足够读权限的进程可从队列中取走消息。每个消息是一个记录它由发送者赋予一个优先级。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。这跟管道和FIFO是相反的,对后者来说,除非读出者已存在,否则先有写入者是没有意义的。消息队列是随内核持续的。一个进程可以先往某个队列写入一些消息...
四、程序例子 下面是一个用共享内存实现进程间通信例子,客户进程向共享内存区输入数据,服务器进程读出数据,并情况共享内存区,直到用户数据“q”程序终止。我们使用了信号量保证服务器进程的互斥。 /*server.c服务器程序*/ #include #include #include #include #include #include #include #include union semun{ int val; struct semid_ds *buf; unsigned short int *array; }; main(int argc,char **argv) { ...
4. 名称:: msgrcv 功能: 从队列中取出消息 头文件: #include #include #inlcude 函数原形: int msgrcv(int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg); 参数: msqid 消息队列描述字 msgp 指向消息数据的指针 msgsz 接收消息的大小 msgtyp 请求读取的消息类型 msgflg 标志位 返回值: 若成功则为消息数据部分的长度,若出错则为-1。 该系统调用从msgid代表的消...
1、消息队列的基本概念 消息队列就是一个消息的链表。有足够写权限的进程可往队列中放置消息,有足够读权限的进程可从队列中取走消息。每个消息是一个记录它由发送者赋予一个优先级。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。这跟管道和FIFO是相反的,对后者来说,除非读出者已存在,否则先有写入者是没有意义的。消息队列是随内核持续的。一个进程可以先往某个队列写入一些消息后...
4. 名称:: msgrcv 功能: 从队列中取出消息 头文件: #include #include #inlcude 函数原形: int msgrcv(int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg); 参数: msqid 消息队列描述字 msgp 指向消息数据的指针 msgsz 接收消息的大小 msgtyp 请求读取的消息类型 msgflg 标志位 返回值: 若成功则为消息数据部分的长度,若出错则为-1。 该系统调用从msgid代表的...
一、什么是信号灯 信号灯(也叫信号量)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。信号灯是进程/线程同步的一种方式,有时候我们需要保护一段代码,使它每次只能被一个执行进程/线程运行,这种工作就需要一个二进制开关;有时候需要限制一段代码可以被多少个进程/线程执行,这就需要用到关于计数信号灯。信号灯开关是二进制信号灯的一种逻辑扩展,两者实际调用的函数都是一样的。 信号灯分为以下三种。...
4、 名称:: shmctl 功能: 对共享存储段执行多种操作 头文件: #include #inlcude 函数原形: int shmctl(int shm_id,int command,struct shmid_ds *buf); 参数: shm_id 共享内存标识码 command 功能选择 buf 指向shmid_ds结构的指针 返回值: 若成功则为0,若出错则为-1 shmctl提供了对一个共享内存区的多种操作。 shmid为共享存储的ID,用于内部标识共享存储。cmd参数指定下列命令中的一种,使其...
一、什么是共享内存区 共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率。 共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可以把同一段共...
4、 名称:: shmctl 功能: 对共享存储段执行多种操作 头文件: #include #inlcude 函数原形: int shmctl(int shm_id,int command,struct shmid_ds *buf); 参数: shm_id 共享内存标识码 command 功能选择 buf 指向shmid_ds结构的指针 返回值: 若成功则为0,若出错则为-1 shmctl提供了对一个共享内存区的多种操作。 shmid为共享存储的ID,用于内部标识共享存储。cmd参数指定下列命令中的一种,使...