做网站一般几个人,百度地图怎么看上次导航的路线,个人网站制作模板主页,asp.net 网站管理系统使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式#xff1a; 当键盘按ctrlc的时候#xff0c;切换消息读取方式#xff0c;一般情况为读取指定编号的消息#xff0c;按ctrlc之后#xff0c;指定的编号不读取#xff0c;读取其他所有编号的消息…使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式 当键盘按ctrlc的时候切换消息读取方式一般情况为读取指定编号的消息按ctrlc之后指定的编号不读取读取其他所有编号的消息
#include stdio.h
#include string.h
#include stdlib.h
#include unistd.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include pthread.h
#include semaphore.h
#include wait.h
#include signal.h
#include sys/socket.h
#include arpa/inet.h
#include sys/socket.h
#include sys/ipc.h
#include sys/sem.h
#include semaphore.h
#include sys/msg.h
#include sys/shm.h
#include sys/un.h
int brr0;
struct msgbuf
{long mtype;char mtext[128];
};
void *run(void *arg)
{ int* mytype(int*)arg;key_t keyftok(./ipc,1);if(key-1){perror(ftok);return NULL;}int idmsgget(key,IPC_CREAT|0666);if(id-1){perror(msgget);return NULL;}struct msgbuf msg;int size0;while(1) {if(brr0){memset(msg,0,sizeof(msg));msgrcv(id,msg,128,*mytype,IPC_NOWAIT);if(strlen(msg.mtext)!0){putchar(10);printf(读取到的消息为:%s\n,msg.mtext);printf(请输入);fflush(stdout);}else{;}}else if(brr1){memset(msg,0,sizeof(msg));msgrcv(id,msg,128,*mytype,IPC_NOWAIT|020000);if(strlen(msg.mtext)!0){putchar(10);printf(读取到的消息为:%s\n,msg.mtext);printf(请输入);fflush(stdout);}else{;}}}
}
void handler(int signum)
{if(signumSIGINT){brr(brr1)%2;printf(%d\n,brr);}}
int main(int argc, const char *argv[])
{pthread_t id1;int mytype1atoi(argv[2]);pthread_create(id1,0,run,mytype1);int mytypeatoi(argv[1]);key_t keyftok(./ipc,1);if(key-1){perror(ftok);return 1;}int idmsgget(key,IPC_CREAT|0666);if(id-1){perror(msgget);return 1;}struct msgbuf msg;int size0;signal(SIGINT,handler);while(1){memset(msg,0,sizeof(msg));msg.mtypemytype;printf(请输入);scanf(%128s,msg.mtext);while(getchar()!\n);sizestrlen(msg.mtext);msgsnd(id,msg,size,0);}return 0;
}