📄 p11-20.c
字号:
#include "outshm.h"
int main(void) /* 客户程序 */
{
struct exchange *shm;
int shmid;
int producer,consumer,i;
key_t key1=123,key2=456;
int stop = 0;
/* 打开信号量consumer和producer */
consumer = semget( key1, 1, 0660 );
producer = semget( key2, 1, 0660 );
if (consumer == -1||producer == -1){
printf("server dose not run.\n");
exit(0);
}
/* 获得并连接名为"shared"的共享存储段 */
shm = (struct exchange *)shminit(ftok("shared",0),&shmid);
/* 从共享存储段读服务进程所写的数据,并输出它们*/
for( i=0; ; i++ ){
semaphore_P(consumer); /* 等待数据生成完毕 */
/* 处理数据,遇到"end"结束循环 */
printf("Data recieived:Sequence=%d,data=%s",shm->seq,shm->buf);
if (strncmp(shm->buf, "end", 3) == 0)
break;
semaphore_V(producer); /* 让服务进程生成数据 */
}
/* 分离共享存储段 */
shmdt(shm);
semaphore_V(producer); /* 让服务进程生成数据 */
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -