当前位置: 首页 > news >正文

在百度上做公司网站得多少钱苏州本地网站建设

在百度上做公司网站得多少钱,苏州本地网站建设,科室网站建设,wordpress 页面编辑目录 一、验证环境 二、Linux进程间通信进制 三、XSI-IPC机制 四、IPC相关地操作系统命令 1、ipcs #xff08;1#xff09;-a #xff08;2#xff09;-l 2、ipcrm #xff08;1#xff09;-Q 五、IPC对象的key值和ID值 六、消息队列 七、消息队列相关结构体…目录 一、验证环境 二、Linux进程间通信进制 三、XSI-IPC机制 四、IPC相关地操作系统命令 1、ipcs 1-a 2-l 2、ipcrm 1-Q 五、IPC对象的key值和ID值 六、消息队列 七、消息队列相关结构体 1、struct msqid_ds 2、struct ipc_perm 3、MsgInfoSt自定义 八、消息队列相关函数 1、ftok 1声明 2作用 3参数 4返回值 2、msgget 1声明 2作用 3参数 4返回值 3、msgctl 1声明 2作用 3参数 4返回值 4、msgsnd 1声明 2作用 3参数 4返回值 5errno错误码 5、msgrcv 1声明 2作用 3参数 4返回值 5errno错误码 九、测试 1、发送端源码 2、接收端源码 3、测试效果 1发送端会话 2接收端会话 一、验证环境 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2 二、Linux进程间通信进制 Linux进程间通信进制可以按照进程是否在同一主机上或不同主机上分为两大类具体分类如下表 一级二级三级四级进程间通信进制同一主机进程间通信机制Unix进程间通信进制管道命名管道信号XSI-IPC机制信号量集共享内存消息队列不同主机进程间通信机制RPCSocket 三、XSI-IPC机制 名称英文名描述信号量集semaphore set用于实现进程之间的同步与互斥。共享内存shared memory用于在进程之间高效地共享数据适用于数据量大速度要求高地场景。消息队列message queue进程之间传递数据地一种简单办法。 四、IPC相关地操作系统命令 这些命令可以辅助我们更好地观察实验现象有的话添彩没有的话也麽事情。 1、ipcs 命令用途是提供有关IPC设施的信息。 只介绍我用的多的。 1-a 输出所有信息。 [rootczg2 ~]# ipcs -a--------- 消息队列 ----------- 键 msqid 拥有者 权限 已用字节数 消息 ------------ 共享内存段 -------------- 键 shmid 拥有者 权限 字节 nattch 状态 0x00000000 2 gdm 777 16384 1 目标 0x00000000 5 gdm 777 2129920 2 目标 --------- 信号量数组 ----------- 键 semid 拥有者 权限 nsems 2-l 显示资源限制 [rootczg2 ~]# ipcs -l---------- 消息限制 ----------- 系统最大队列数量 32000 最大消息尺寸 (字节) 8192 默认的队列最大尺寸 (字节) 16384---------- 同享内存限制 ------------ 最大段数 4096 最大段大小 (千字节) 18014398509465599 最大总共享内存 (千字节) 18014398442373116 最小段大小 (字节) 1--------- 信号量限制 ----------- 最大数组数量 128 每个数组的最大信号量数目 250 系统最大信号量数 32000 每次信号量调用最大操作数 32 信号量最大值 32767 2、ipcrm 命令用途是删除XSI-IPC对象。 只介绍我用的多的。 1-Q 根据消息队列键值Key删除消息队列。 [rootczg2 ~]# ipcs -a--------- 消息队列 ----------- 键 msqid 拥有者 权限 已用字节数 消息 0x0000000a 21 gbase 666 0 0 ------------ 共享内存段 -------------- 键 shmid 拥有者 权限 字节 nattch 状态 0x00000000 2 gdm 777 16384 1 目标 0x00000000 5 gdm 777 2129920 2 目标 --------- 信号量数组 ----------- 键 semid 拥有者 权限 nsems [rootczg2 ~]# ipcrm -Q 0x0000000a[rootczg2 ~]# ipcs -a--------- 消息队列 ----------- 键 msqid 拥有者 权限 已用字节数 消息 ------------ 共享内存段 -------------- 键 shmid 拥有者 权限 字节 nattch 状态 0x00000000 2 gdm 777 16384 1 目标 0x00000000 5 gdm 777 2129920 2 目标 --------- 信号量数组 ----------- 键 semid 拥有者 权限 nsems 五、IPC对象的key值和ID值 Linux系统中的IPC对象是全局的为每个IPC对象分配唯一ID因为每个内核中的IPC结构消息队列、信号量或共享内存段都用一个非负整数表示。 六、消息队列 序号描述1进程之间传递数据的一种简单方法。2把每个消息看作一条记录具有特定的格式。3消息队列就是消息的链表。4对消息队列有写权限的进程可以按照一定的规则添加新消息。5对消息队列有读权限的进程可以从消息队列中读走消息。6消息队列更够克服管道或命名管道机制的一些缺点如实时性差。 七、消息队列相关结构体 1、struct msqid_ds 内核内一条消息的记录结构。 /* Structure of record for one message inside the kernel.The type struct msg is opaque. */ struct msqid_ds {struct ipc_perm msg_perm; /* structure describing operation permission */__time_t msg_stime; /* time of last msgsnd command */ #ifndef __x86_64__unsigned long int __unused1; #endif__time_t msg_rtime; /* time of last msgrcv command */ #ifndef __x86_64__unsigned long int __unused2; #endif__time_t msg_ctime; /* time of last change */ #ifndef __x86_64__unsigned long int __unused3; #endif__syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */msgqnum_t msg_qnum; /* number of messages currently on queue */msglen_t msg_qbytes; /* max number of bytes allowed on queue */__pid_t msg_lspid; /* pid of last msgsnd() */__pid_t msg_lrpid; /* pid of last msgrcv() */__syscall_ulong_t __unused4;__syscall_ulong_t __unused5; }; 参数描述 msg_perm 结构体描述符操作权限。msg_stime最后一条发送函数的时间。 msg_rtime 最后一条接受函数的时间。 msg_ctime 最后更改的时间。 __msg_cbytes 队列的当前字节数。 msg_qnum 队列的当前消息数。 msg_qbytes 队列允许的最大字节数。 msg_lspid 最后一个发送函数进程的pid号。 msg_lrpid 最后一个接收函数进程的pid号。 2、struct ipc_perm 用于将权限信息传递给 IPC 操作的数据结构。 /* Data structure used to pass permission information to IPC operations. */ struct ipc_perm{__key_t __key; /* Key. */__uid_t uid; /* Owners user ID. */__gid_t gid; /* Owners group ID. */__uid_t cuid; /* Creators user ID. */__gid_t cgid; /* Creators group ID. */unsigned short int mode; /* Read/write permission. */unsigned short int __pad1;unsigned short int __seq; /* Sequence number. */unsigned short int __pad2;__syscall_ulong_t __unused1;__syscall_ulong_t __unused2;};参数描述 __key IPC键值。 uid 拥有者用户ID。 gid 拥有者组ID。 cuid 创建者用户ID。 cgid 创建者组ID。 mode 读写权限。 __seq 序列号。 3、MsgInfoSt自定义 这个结构体第一个参数必须是long类型第二个类型是char类型。 typedef struct MsgInfoSt {MessageType MsgType;char MsgInfo[MESSAGE_STR_MAX_SIZE]; }MsgInfoSt; 参数描述MsgType正消息类型。必须大于0小于0的消息类型有特殊的指示作用。MsgInfo消息数据。 八、消息队列相关函数 1、ftok 1声明 key_t ftok(const char *__pathname, int __proj_id) 2作用 名称描述英文解释convert a pathname and a project identifier to a System V IPC key中文解释将路径名和项目标识符转换为 System V IPC 密钥。 3参数 参数名描述__pathname文件路径通信的进程间需要一样这样才会生成同一个Key。__proj_id项目编号通信的进程间需要一样这样才会生成同一个Key。 4返回值 名称描述成功返回Key。失败返回-1可以用errno得到具体错误码。 2、msgget 1声明 int msgget(key_t __key, int __msgflg) 2作用 名称描述英文解释get the XSI message queue identifier中文解释获取 XSI 消息队列标识符。 3参数 参数名描述__key创建或打开消息队列对象时指定的Key值。__msgflg 设置的访问权限取值为一个或多个值的或。举例 1000400读权限。 2000200写权限。 3010000改变控制方式权限。没用过 还可以附加其他参数按位或 1IPC_CREAT消息队列不存在创建存在就打开。 2IPC_EXCL只有消息队列不存在时才能创建。不然报错。 3IPC_NOWAIT如果操作需要等待则直接返回错误。 4返回值 名称描述成功返回消息队列对象ID。失败返回-1可以用errno得到具体错误码。 3、msgctl 1声明 int msgctl(int __msqid, int __cmd, struct msqid_ds *__buf) 2作用 名称描述英文解释XSI message control operations中文解释XSI 消息控制操作。 3参数 参数名描述__msqid消息队列对象ID。__cmd 对__msqid指定的消息队列执行的命令。支持的命令有 1IPC_STAT取次队列的msqid_ds结构存放到__buf中。 2IPC_SET将ipc_perm结构体的uid、gid、mode和msg_qbytes从__buf复制到__msqid对应消息队列的msqid_ds结构体中。 3从操作系统中删除该消息队列及其所有数据。 __bufmsqid_ds结构体。 4返回值 名称描述成功返回0。失败返回-1可以用errno得到具体错误码。 4、msgsnd 1声明 int msgsnd(int __msqid, const void *__msgp, size_t __msgsz, int __msgflg) 2作用 名称描述英文解释XSI message send operation中文解释XSI 消息发送操作。 3参数 参数名描述__msqid消息队列对象ID。__msgp 指向自定义结构体MsgInfoSt的结构体指针。 __msgsz消息的字节大小。__msgflg 0阻塞模式。 IPC_NOWAIT非阻塞模式。 当出现下述情况时 1指定的消息队列容量已满。 2在系统范围存在太多的消息。 若设置了IPC_NOWAIT会立即返回EAGAIN错误。 4返回值 名称描述成功返回0。失败返回-1可以用errno得到具体错误码。 5errno错误码 错误码错误描述 EAGAIN __msgflg为IPC_NOWAIT时 1消息队列已满。 2队列中的消息总数等于系统限制值。 3队列中的字节总数等于系统限制值。 EIDRM 系统中删除了此队列。 EINTR 捕捉到了一个信号并从信号处理程序返回。 EACCES 调用进程没有操作权限。 EINVAL __msqid的值不是有效的消息队列标识符或者mtype的值小于1;或者msgsz的值小于0或大于系统施加的限制。 5、msgrcv 1声明 ssize_t msgrcv(int __msqid, void *__msgp, size_t __msgsz, long __msgtyp, int __msgflg) 2作用 名称描述英文解释XSI message receive operation中文解释XSI 消息接收操作。 3参数 参数名描述__msqid消息队列对象ID。__msgp 指向自定义结构体MsgInfoSt的结构体指针。 __msgsz消息的字节大小。__msgtyp 接收的消息类型。 等于0返回队列中的第一个消息。 大于0返回消息队列中类型值为__msgtyp的第一个消息。 小于0返回消息队列中类型值小于或等于__msgtyp绝对值中类型值最小的第一个消息。 __msgflg 当消息队列没有收到的消息时会如何操作 0阻塞模式。 IPC_NOWAIT非阻塞模式。 MSG_NOERROR如果__msgsz小于__msgp返回的长度数据截断不会发生报错。 4返回值 名称描述成功返回0。失败返回-1可以用errno得到具体错误码。 5errno错误码 错误码错误描述 EAGAIN __msgflg为IPC_NOWAIT时 1消息队列已满。 2队列中的消息总数等于系统限制值。 3队列中的字节总数等于系统限制值。 EIDRM 系统中删除了此队列。 EINTR 捕捉到了一个信号并从信号处理程序返回。 EACCES 调用进程没有操作权限。 EINVAL __msqid的值不是有效的消息队列标识符或者mtype的值小于1;或者msgsz的值小于0或大于系统施加的限制。 E2BIG 接受的消息内容过长。 ENOMSGIPC_NOWAIT是在 msgflg 中指定的并且消息队列中不存在请求类型的消息。 九、测试 1、发送端源码 #include MyIpc.h #include FileOperate.h#define TEST_PATH_NAME /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Process/File2Key.txt #define TEST_PROJECT_ID 0Status main() {int RetMsgId -1;key_t RetKey -1;if (File2Key(TEST_PATH_NAME, TEST_PROJECT_ID, RetKey)){return FailFlag;}if (MessageGet(RetKey,0666|IPC_CREAT,RetMsgId) FailFlag){return FailFlag;}// if (MessageGet(0x0000000A,0666|IPC_CREAT,RetMsgId) FailFlag)// {// return FailFlag;// }MsgInfoSt* SendData (MsgInfoSt*)MyMalloc(sizeof(MsgInfoSt));SendData-MsgType 1;while (1){LogFormat(Debug,Send Data : );fgets(SendData-MsgInfo,MESSAGE_STR_MAX_SIZE,stdin);if (MessageSend(RetMsgId,SendData,0) FailFlag){free(SendData);SendData NULL;return FailFlag;}if (strncmp(SendData-MsgInfo,Finish,6) 0){break;}MySleep(1);}free(SendData);SendData NULL;return SuccessFlag; } 2、接收端源码 #include MyIpc.h #include FileOperate.h#define TEST_PATH_NAME /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Process/File2Key.txt #define TEST_PROJECT_ID 0Status main() {int RetMsgId -1;key_t RetKey -1;if (File2Key(TEST_PATH_NAME, TEST_PROJECT_ID, RetKey)){return FailFlag;}if (MessageGet(RetKey,0666|IPC_CREAT,RetMsgId) FailFlag){return FailFlag;}// if (MessageGet(0x0000000A,0666|IPC_CREAT,RetMsgId) FailFlag)// {// return FailFlag;// }MsgInfoSt* RecDaya (MsgInfoSt*)MyMalloc(sizeof(MsgInfoSt));RecDaya-MsgType 1;while (1){if (MessageRcv(RetMsgId,RecDaya,MESSAGE_STR_MAX_SIZE,1,0) FailFlag){free(RecDaya);RecDaya NULL;return FailFlag;}if (strncmp(RecDaya-MsgInfo,Finish,6) 0){break;}}free(RecDaya);RecDaya NULL;struct msqid_ds* QueueDesc (struct msqid_ds*)MyMalloc(sizeof(struct msqid_ds));if (MessageCtl(RetMsgId,IPC_STAT,QueueDesc) FailFlag)//获取消息队列相关信息{free(QueueDesc);QueueDesc NULL;return FailFlag;}PrintfMsgQueueIdDescInfo(QueueDesc,Debug);if (MessageCtl(RetMsgId,IPC_RMID,0) FailFlag)//关闭消息队列{free(QueueDesc);QueueDesc NULL;return FailFlag;}free(QueueDesc);QueueDesc NULL;return SuccessFlag; } 3、测试效果 1发送端会话 [gbaseczg2 Process]$ ./TestQueueSend 2023-12-15 14:42:26-P[95243]-T[0]-[Debug]-File2Key : OK, RetKey : c320. 2023-12-15 14:42:26-P[95243]-T[0]-[Debug]-MessageGet : OK. 2023-12-15 14:42:26-P[95243]-T[0]-[Debug]-Send Data : Sunshine 2023-12-15 14:42:29-P[95243]-T[0]-[Debug]-MessageSend : OK, MsgSize : 9, MsgType : 1, MsgInfo : Sunshine . 2023-12-15 14:42:30-P[95243]-T[0]-[Debug]-MySleep : OK, Seconds : 1. 2023-12-15 14:42:30-P[95243]-T[0]-[Debug]-Send Data : Moon 2023-12-15 14:42:38-P[95243]-T[0]-[Debug]-MessageSend : OK, MsgSize : 5, MsgType : 1, MsgInfo : Moon . 2023-12-15 14:42:39-P[95243]-T[0]-[Debug]-MySleep : OK, Seconds : 1. 2023-12-15 14:42:39-P[95243]-T[0]-[Debug]-Send Data : Finish 2023-12-15 14:42:43-P[95243]-T[0]-[Debug]-MessageSend : OK, MsgSize : 7, MsgType : 1, MsgInfo : Finish . 2接收端会话 [gbaseczg2 Process]$ ./TestQueueReceive 2023-12-15 14:41:46-P[95103]-T[0]-[Debug]-File2Key : OK, RetKey : c320. 2023-12-15 14:41:46-P[95103]-T[0]-[Debug]-MessageGet : OK. 2023-12-15 14:42:05-P[95103]-T[0]-[Debug]-MessageRcv : OK, MsgSize : 14, MsgType : 1, MsgInfo : 大unshine . 2023-12-15 14:42:13-P[95103]-T[0]-[Debug]-MessageRcv : OK, MsgSize : 7, MsgType : 1, MsgInfo : Finish . 2023-12-15 14:42:13-P[95103]-T[0]-[Debug]-MessageCtl : OK. 2023-12-15 14:42:13-P[95103]-T[0]-[Debug]-P MsgQidDesc : time of last msgsnd command : 1702622533 time of last msgrcv command : 1702622533 time of last change : 1702622501 current number of bytes on queue : 0 number of messages currently on queue : 0 max number of bytes allowed on queue : 16384 pid of last msgsnd() : 95070 pid of last msgrcv() : 95103 2023-12-15 14:42:13-P[95103]-T[0]-[Debug]-Decimal2Binary : OK, DecimalVal :438, RetBinary : 00000000000000000000000110110110. 2023-12-15 14:42:13-P[95103]-T[0]-[Debug]-P IpcPerm : Key : c320 Owners user ID : 1001 Owners group ID : 1001 Creators user ID : 1001 Creators group ID : 1001 Read/write permission : 00000000000000000000000110110110 Sequence number : 0 2023-12-15 14:42:13-P[95103]-T[0]-[Debug]-MessageCtl : OK.
http://www.zqtcl.cn/news/497507/

相关文章:

  • 学校网站前置审批网站做哪些比较有意思
  • 怎么给企业做网站学计算机网站建设
  • 网站关键词优化排名技巧aiyuan wordpress
  • 建设工程资质证书二维码扫描网站自己做的网站如何让qq登录
  • 网站域名有效期wordpress 特别慢
  • 建立个人网站服务器如何用dedecms做网站
  • php网站开发实市场推广策略 包括哪些
  • 合众商道网站开发可以投稿的写作网站
  • 北京贸易公司网站制作免费的查企业的网站
  • 网站建设报价表模板下载小程序怎么找出来
  • 网站制作简单协议wordpress快速建站教程视频教程
  • 杭州做网站价格北京企业响应式网站建设
  • 30个成功的电子商务网站设计中企动力 网站报价
  • php 网站开发 视频百度seo排名查询
  • 网站开发代码wordpress提示安装
  • 网站推广的策略高端网球拍
  • 广东知名网站建设wordpress 用户量
  • asp源代码网站网络架构图是什么
  • 专业做淘宝网站公司吗苏州网站制作开发
  • 电商网站模板html安阳历史
  • seo快速排名多少钱安阳网站怎么优化
  • 如何在网站后台删除栏目阿里巴巴上做网站要多少钱
  • 网站建设意识形态工作河北省两学一做网站
  • 綦江建站哪家正规php做不了大型网站吗
  • 优秀的设计网站青岛网站设计企业
  • 谁有做爰网站号wordpress 4.8 中文
  • 毕业设计做网站用什么广州中智软件开发有限公司
  • 哪个网站不花钱可以做招聘wordpress没有页脚
  • 免费视频网站素材网络系统管理技能大赛
  • 聊天网站建设网站建设毕业设计评价