- 浏览: 318859 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
js调用excel、word打印 -
jyangzi5:
[u][/u]引用
常见hibernate面试题 -
wangv:
<code="java">Sy ...
常见hibernate面试题 -
bardo:
建议看看这一个
http://bardo.iteye.com ...
金额数字转中文大写 -
dotjar:
在继续讲解HQL其他更为强大的查询功能前,我们先来讲解以下利用 ...
常见hibernate面试题
UNIX系统通讯--学习笔记
1.IPC
--IPC系统简介
-IPC进程间通讯(Interprocess Communication)
1.消息队列(Message queue,q):应用与不同进程间少量数据的顺序共享
2.信号量(Semaphore,s):应用与进程之间的同步与互斥的控制
3.共享内存(Share Memory,m):应用与进程之间大批量数据的随即共享访问
1.1 查询IPC对象
shell命令ipcs查询当前系统的ipc对象信息
命令:ipcs[options]
-q 只查询ipc对象中的消息队列
-s 只查询ipc对象中的信号量
-m 只查询ipc对象中的共享内存
-a 查询ipc对象的全部属性
默认 -qsm
IPC对象的标识号ID:
-标识号为非负整数,unix通过标识号在系统唯一确定IPC对象。
-不同类型IPC对象的标识号可以相同,但同类型IPC对象的标识号一定唯一。
IPC对象的关键字KEY
-创建IPC对象,必须指定一个IPC关键字,为一个32位的整数。
1.2 删除IPC对象
shell命令ipcrm可以删除IPC对象信息
命令:ipcrm[options]
-q id 删除标识号为id的消息队列
-Q key 删除关键字为key的消息队列
-s id 删除标识号为id的信号量
-S key 删除关键字为key的信号量
-m id 删除标识号为id的共享内存
-M key 删除关键字为key的共享内存
ipcs -aq | grep 1234
chmod 777 msg_msgsnd1
./msg_msgsnd1
ipcsrm -q 1966292
ipcsrm -q 1234
1.3 IPC结构
/usr/include/sys/ipc.h
1.4 IPC内核限制
-消息队列:消息的最大长度,队列最大字节数,消息总数。
-信号量:最多可用信号量集,每个信号量集中最多的信号量个数,可用的信号量最大数。
--消息队列简介
-先进先出的队列数据结构,是一个链表。
2.1 消息队列结构
/usr/include/sys/msg.h
ipcs -aq
2.2 消息结构
/usr/include/sys/msg.h
--消息队列函数介绍
3.1 消息队列的创建
int msgget(key_t key,int msgflg);
-参数key是消息队列一关键字,具有唯一性。
-参数msgflg的低9位指定了队列的属主,属组和其他用户的访问权限,参数msgflg的其他位指定了
消息队列的创建方式。
* IPC_CREATE:创建消息队列,若存在就打开。
* IPC_EXCL:同IPC_CREATE一起使用,创建一个不存在的消息队列,若存在则函数调用失败。
vi msg_msgget.c
ipcs -q | grep 1234
cc -o msg_msgget msg_msgget.c
l msg_msgget
./msg_msgget
ipcs -aq | grep 1234
3.2 消息队列的发送
int msgsnd(int msqid,struct msgbuf *msgp,int msgsz,int msgflg);
* 参数msqid指定了发送消息队列的标识号。
* 参数msgp指向存储发送消息内容的内存地址。
* 参数msgsz指定发送消息数据的长度,不包括消息类型部分。
* 参数msgflg控制消息发送的方式。
* IPC_NOWAIT:消息采用非阻塞方式发送。
造成msgsnd()等待的条件有两种:
1.消息队列满:当前消息的大小与当前消息队列中的字节数之和超过了消息队列的总容量。
msg_cbytes + msgsz > msg_qbytes
2.消息总数满:系统中所有的消息队列的消息总数已经达到了操作系统的上限值。
vi msg_msgsnd.c
cc -o msg_msgsnd msg_msgsnd.c
ipcs -aq | grep 1234
ipcrm -Q 1234
./msg_msgsnd
ipcs -aq | grep 1234
3.3 消息队列的接收
3.4 消息队列的控制
--消息队列的常见应用模型
4.1 单消息队列完成(对等进程间)的双向通讯
4.2 双消息队列完成(对等进程间)的双向通讯
4.3 多消息队列完成(对等进程间)的双向通讯
4.4 单消息队列完成(客户-服务器进程间)的双向通讯
4.5 双消息队列完成(客户-服务器进程间)的双向通讯
4.6 多消息队列完成(客户-服务器进程间)的双向通讯
2.Socket
3.Tuxedo
1.IPC
--IPC系统简介
-IPC进程间通讯(Interprocess Communication)
1.消息队列(Message queue,q):应用与不同进程间少量数据的顺序共享
2.信号量(Semaphore,s):应用与进程之间的同步与互斥的控制
3.共享内存(Share Memory,m):应用与进程之间大批量数据的随即共享访问
1.1 查询IPC对象
shell命令ipcs查询当前系统的ipc对象信息
命令:ipcs[options]
-q 只查询ipc对象中的消息队列
-s 只查询ipc对象中的信号量
-m 只查询ipc对象中的共享内存
-a 查询ipc对象的全部属性
默认 -qsm
IPC对象的标识号ID:
-标识号为非负整数,unix通过标识号在系统唯一确定IPC对象。
-不同类型IPC对象的标识号可以相同,但同类型IPC对象的标识号一定唯一。
IPC对象的关键字KEY
-创建IPC对象,必须指定一个IPC关键字,为一个32位的整数。
1.2 删除IPC对象
shell命令ipcrm可以删除IPC对象信息
命令:ipcrm[options]
-q id 删除标识号为id的消息队列
-Q key 删除关键字为key的消息队列
-s id 删除标识号为id的信号量
-S key 删除关键字为key的信号量
-m id 删除标识号为id的共享内存
-M key 删除关键字为key的共享内存
ipcs -aq | grep 1234
chmod 777 msg_msgsnd1
./msg_msgsnd1
ipcsrm -q 1966292
ipcsrm -q 1234
1.3 IPC结构
/usr/include/sys/ipc.h
/* Common IPC Structures */ struct ipc_perm { uid_t uid; gid_t gid; uid_t cuid; gid_t cgid; mode_t mode; unsigned short seq; key_t key; }
1.4 IPC内核限制
-消息队列:消息的最大长度,队列最大字节数,消息总数。
-信号量:最多可用信号量集,每个信号量集中最多的信号量个数,可用的信号量最大数。
--消息队列简介
-先进先出的队列数据结构,是一个链表。
2.1 消息队列结构
/usr/include/sys/msg.h
struct msqid_ds { struct ipc_perm msg_perm; struct msg *msg_first; struct msg *msg_last; unsigned int msg_cbytes; msgqnum_t msg_qnum; msglen_t msg_qbytes; pid_t msg_lspid; pid_t msg_lrpid; time_t msg_stime; time_t msg_rtime; time_t msg_ctime; };
ipcs -aq
2.2 消息结构
/usr/include/sys/msg.h
struct msg { struct msg; long msg; short msg_ts; short msg_sport; }; struct msgbuf { long mtype; char mtext[1] };
--消息队列函数介绍
3.1 消息队列的创建
int msgget(key_t key,int msgflg);
-参数key是消息队列一关键字,具有唯一性。
-参数msgflg的低9位指定了队列的属主,属组和其他用户的访问权限,参数msgflg的其他位指定了
消息队列的创建方式。
* IPC_CREATE:创建消息队列,若存在就打开。
* IPC_EXCL:同IPC_CREATE一起使用,创建一个不存在的消息队列,若存在则函数调用失败。
vi msg_msgget.c
#include<sys/msg.h> #include<sys/types.h> #include<sys/ipc.h> #include<stdio.h> #include<sys/errno.h> extern int errno; struct mymsgbuf { long mtype; char ctext[100]; } void main() { int msid; struct mymsgbuf buf; if((msid = msgget(0x1234,0666|IPC_CREAT)) < 0) { fprintf(stderr,"open msg %X failed.\n",0x1234); return; } }
ipcs -q | grep 1234
cc -o msg_msgget msg_msgget.c
l msg_msgget
./msg_msgget
ipcs -aq | grep 1234
3.2 消息队列的发送
int msgsnd(int msqid,struct msgbuf *msgp,int msgsz,int msgflg);
* 参数msqid指定了发送消息队列的标识号。
* 参数msgp指向存储发送消息内容的内存地址。
* 参数msgsz指定发送消息数据的长度,不包括消息类型部分。
* 参数msgflg控制消息发送的方式。
* IPC_NOWAIT:消息采用非阻塞方式发送。
造成msgsnd()等待的条件有两种:
1.消息队列满:当前消息的大小与当前消息队列中的字节数之和超过了消息队列的总容量。
msg_cbytes + msgsz > msg_qbytes
2.消息总数满:系统中所有的消息队列的消息总数已经达到了操作系统的上限值。
vi msg_msgsnd.c
#include<sys/msg.h> #include<sys/types.h> #include<sys/ipc.h> #include<stdio.h> #include<sys/errno.h> extern int errno; struct mymsgbuf { long mtype; char ctext[100]; } void main() { int msid; struct mymsgbuf buf; if((msid = msgget(0x1234,0666|IPC_CREAT)) < 0) { fprintf(stderr,"open msg %X failed.\n",0x1234); return; } while(strncmp(buf.ctext,"exit",4)) { memset(&buf,0,sizeof(buf)); fprintf(stderr,"Please input:"); fgets(buf.ctext,sizeof(buf.ctext),stdin); buf.mtype = 1000; while((msgsnd(msid,&buf,strlen(buf.ctext),0)) < 0) { if(errno == EINTR) continue; return; } } }
cc -o msg_msgsnd msg_msgsnd.c
ipcs -aq | grep 1234
ipcrm -Q 1234
./msg_msgsnd
ipcs -aq | grep 1234
3.3 消息队列的接收
3.4 消息队列的控制
--消息队列的常见应用模型
4.1 单消息队列完成(对等进程间)的双向通讯
4.2 双消息队列完成(对等进程间)的双向通讯
4.3 多消息队列完成(对等进程间)的双向通讯
4.4 单消息队列完成(客户-服务器进程间)的双向通讯
4.5 双消息队列完成(客户-服务器进程间)的双向通讯
4.6 多消息队列完成(客户-服务器进程间)的双向通讯
2.Socket
3.Tuxedo
发表评论
-
c语言编程之字符串操作
2010-01-26 16:43 1355//在s串中查找与s1相匹配的字符串,找到后用s2将s中与 ... -
c语言编程之信号灯
2010-01-26 15:37 2380#include <stdio.h> #in ... -
c语言编程之消息队列
2010-01-26 14:24 12105//msg.c #include <stdio.h ... -
c语言编程基础之IPC共享内存
2010-01-25 21:02 4772共享内存(Shared Memory) ... -
c语言相关书籍收藏
2010-01-25 20:23 981c函数速查chm版 软件编程规范培训实例与练习 -
c语言编程基础之日志记录
2010-01-25 10:25 3969#include <unistd.h> #i ... -
c语言编程基础之数据库操作
2010-01-23 00:12 1692查询: vi opsql.ec EXEC SQL incl ... -
c语言编程基础之文件操作(二)
2010-01-22 13:38 740数据块读写函数fread和fwtrite C语言还提供 ... -
c语言编程基础之文件操作
2010-01-22 09:46 1287文件使用方式 意义 “rt ... -
sco unix下informix数据库基本操作笔记
2010-01-21 15:07 1954启动数据库: oninit 进入操作界面 is ... -
指针学习笔记
2010-01-21 14:40 871main() { int a,b; int ... -
条件编译-结构体的使用
2010-01-21 13:41 1262main() { struct stu { ... -
c语言基础教程
2010-01-20 20:43 982c语言基础教程 -
socket网络编程基础
2010-01-20 14:02 884/*service.c*/ #include<st ... -
shell操作菜单
2009-12-15 16:53 1189#!/bin/sh #The path of she ... -
SHELL菜单
2009-12-15 10:45 1260SHELL菜单的编写从此变得如此简单 完善的流程控制 简洁精美 ... -
Linux Unix命令及shell编程-学习笔记-未完待续
2009-12-13 20:29 1186Linux Unix命令及shell编程 1.Linux U ... -
Tuxedo中间件开发与管理-学习笔记-未完待续
2009-12-13 20:28 1507Tuxedo中间件开发与管理 1.Tuxedo系统介绍 1 ... -
GCC编译器使用学习笔记(三)
2009-12-13 00:19 1621GCC编译器使用学习笔记(三) gcc debug gcc ... -
C语言库函数,Linux C语言函数大全,C语言编程宝典
2009-12-11 23:18 1944C语言库函数,Linux C语言函数大全,C语言编程宝典
相关推荐
Shell 是一种特殊的程序,被用作用户与内核(kernel)的 UNIX 操作系统核心通讯。常见的 Shell 有 C shell、B shell 和 Korn shell(B shell 的超集)。 二、Unix Shell 主要功能 Shell 的主要功能包括: 1. 解释...
- 目的是开发一个类Unix系统——GNU系统。 - FSF还推出了GNU通用公共许可证(GPL),旨在保护软件的自由性。 - **GPL**(General Public License): - GPL是适用于大多数自由软件基金会软件的一种许可证。 - 它...
- **文件属性与权限**:理解UNIX系统的文件属性和存取权限对于管理和保护文件至关重要。 - **手动分区**:了解如何手动进行磁盘分区,包括选择文件系统、指定挂载点和实际分区过程。 #### 六、安装与优化 - **软件...
domain:说明我们网络程序所在的主机采用的通讯协族(AF_UNIX 和AF_INET 等). AF_UN IX 只能够用于单一的 Unix 系统进程间通信,而 AF_INET 是针对Internet的,因而可以允许在 远程 主机之间通信(当我们 man socket ...
以上知识点为个人学习笔记内容,用于Apache服务器的配置与使用,需掌握以上内容来保障Apache服务器的稳定运行和安全配置。在实际应用中,根据具体需求对知识点进行深入学习和实践。注意,上述内容是基于对Apache...
这个系统可能是一个基本的实时通讯平台,允许用户进行文字聊天,甚至可能包括了音频或视频通信功能。Applet是Java的一种小程序,它可以在支持Java的浏览器上运行,这使得聊天系统可以方便地在Web环境下部署和使用。 ...
- **工作站**:基于RISC和UNIX-OS的专业工作站以及基于Intel和Windows-OS的PC工作站。 **5. 计算机的技术指标** - **字长**:字长是指计算机能直接处理的二进制数据的位数,通常用来衡量计算机的数据处理能力。8个...
涉及的操作系统有Windows 2000、Windows NT、DOS、Unix,这些都是早期或现在仍广泛使用的一些操作系统。操作系统是管理计算机硬件与软件资源的程序,它提供用户操作界面和基本服务。 3. 计算机网络与通讯 文件中...
在“灰尘笔记”这个压缩包中,包含了作者在多个项目中积累的各种技术知识点,主要涉及JavaScript、Python、Java、TeX、AWS(Amazon Web Services)、系统管理、Discord以及TeX排版等多个方面。以下是对这些主题的...
办公自动化系统包括计算机操作系统,如Unix、Linux和Windows,以及OA系统和MIS系统。OA系统主要用于事务性和信息处理的自动化,而MIS系统是一个集成的人机系统,用于信息的收集、传输、加工、储存和维护,支持组织的...
以Unix、Linux和Windows为代表的计算机操作系统为各种应用提供了运行平台。而OA系统(Office Automation System)和MIS系统(Management Information System)则是办公自动化软件的核心。OA系统负责事务性和信息处理...
系统软件,如DOS、Windows、Linux、Unix、Mac OS、Android和iOS,是操作系统层面的软件,负责管理和调度计算机资源。而应用软件则是用户直接使用的程序,例如Microsoft Office套件用于文档处理,QQ和YY提供即时通讯...
1. Lotus Notes:作为Lotus平台的核心组件,Notes是一种集成了电子邮件、日历、任务、笔记、数据库和应用程序开发的客户端软件。它支持离线工作模式,使得员工在无网络连接时也能处理事务。Notes还提供强大的安全性...