有道云笔记
#include <myhead.h>
struct msgbuf{
long mtype;
char mtext[1024];
};
#define SIZE (sizeof(struct msgbuf) - sizeof(long))
void *task(void *info){
int msgid = *(int *)info;
struct msgbuf buf;
while(1){
//固定读取类型5
msgrcv(msgid, &buf, SIZE, 5, 0);
printf("\033[;034m%s\033[0m\n", buf.mtext);
//如果为“quit”结束聊天
if(strcmp(buf.mtext, "quit") == 0){
puts("聊天结束");
msgctl(msgid, IPC_RMID, NULL);
raise(SIGINT);
}
}
}
int main(int argc, const char *argv[])
{
//获取key值
key_t key = ftok("./", 'k');
if(key == -1){
perror("create key error");
return -1;
}
//创建消息队列
int msgid = msgget(key, IPC_CREAT | 0664);
if(msgid == -1){
perror("create msgid error");
return -1;
}
//创建线程
pthread_t tid;
if(pthread_create(&tid, NULL, task, &msgid) != 0){
puts("create tid error");
return -1;
}
//固定类型10进行写入
struct msgbuf buf;
buf.mtype = 10;
while(1){
scanf(" %[^\n]", buf.mtext);
msgsnd(msgid, &buf, SIZE, 0);
if(strcmp(buf.mtext, "quit") == 0){
puts("聊天结束");
msgctl(msgid, IPC_RMID, NULL);
raise(SIGINT);
}
}
return 0;
}
#include <myhead.h>
struct msgbuf{
long mtype;
char mtext[1024];
};
#define SIZE (sizeof(struct msgbuf) - sizeof(long))
void *task(void *info){
int msgid = *(int *)info;
struct msgbuf buf;
while(1){
msgrcv(msgid, &buf, SIZE, 10, 0);
printf("\033[;034m%s\033[0m\n", buf.mtext);
if(strcmp(buf.mtext, "quit") == 0){
puts("聊天结束");
msgctl(msgid, IPC_RMID, NULL);
raise(SIGINT);
}
}
}
int main(int argc, const char *argv[])
{
key_t key = ftok("./", 'k');
if(key == -1){
perror("create key error");
return -1;
}
int msgid = msgget(key, IPC_CREAT | 0664);
if(msgid == -1){
perror("create msgid error");
return -1;
}
pthread_t tid;
if(pthread_create(&tid, NULL, task, &msgid) != 0){
puts("create tid error");
return -1;
}
struct msgbuf buf;
buf.mtype = 5;
while(1){
scanf(" %[^\n]", buf.mtext);
msgsnd(msgid, &buf, SIZE, 0);
if(strcmp(buf.mtext, "quit") == 0){
puts("聊天结束");
msgctl(msgid, IPC_RMID, NULL);
raise(SIGINT);
}
}
return 0;
}