linux c读取tty和消息队列的使用demo
来源:互联网 发布:中控科门禁软件下载 编辑:程序博客网 时间:2024/06/04 23:26
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#define TTY0 "/dev/pts/0"#define TTY1 "/dev/pts/12"#define TTY2 "/dev/pts/14"#define TTY3 "/dev/pts/3"void tty_write(char* tty,char* buff){int fd=-1;fd=open(tty,O_RDWR);if(fd<0){printf("open errror\n");//perror("open tty error\n");exit(-1);}write(fd,buff,strlen(buff));close(fd);}int main(int argc, char const *argv[]){char buff[]="test tty... \n";char tty[32]={0};strcpy(tty,TTY1);tty_write(tty,buff);strcpy(tty,TTY2);tty_write(tty,buff);strcpy(tty,TTY0);tty_write(tty,buff);return 0;}
//msg_send.c#include <stdio.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#define MAX_TEXT 512typedef struct my_msg_st{long int my_msg_type;char some_text[MAX_TEXT];} my_msg_st;//Linux c消息队列的使用int main(int argc, char const *argv[]){int running=1;my_msg_st some_data;int msgid;char buffer[BUFSIZ];printf("BUFSIZ=%d\n", BUFSIZ);msgid=msgget((key_t)1234,0666|IPC_CREAT);if(msgid==-1){fprintf(stderr, "msgget failed with error:%s\n", strerror(errno));exit(-1);}while(running){printf("enter some text:\n");fgets(buffer,BUFSIZ,stdin);some_data.my_msg_type=1;//初始化消息类型strcpy(some_data.some_text,buffer);//添加到消息队列if(msgsnd(msgid,(void*)&some_data,MAX_TEXT,0)==-1){fprintf(stderr, "msgsnd failed\n");exit(-1);}if(strncmp(buffer,"end",3)==0){running=0;}system("ipcs -q");}return 0;}
//msg_recv.c#include <stdio.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#define MAX_TEXT 512typedef struct my_msg_st{long int my_msg_type;char some_text[MAX_TEXT];} my_msg_st;//Linux c消息队列的使用int main(int argc, char const *argv[]){int running=1;my_msg_st some_data;int msgid;long int msg_to_receive=0;//消息类型msgid=msgget((key_t)1234,0666|IPC_CREAT);if(msgid==-1){fprintf(stderr, "msgget failed with error:%s\n", strerror(errno));exit(-1);}while(running){//从消息队列获取消息,要指定消息类型if(msgrcv(msgid,(void*)&some_data,MAX_TEXT,msg_to_receive,0)==-1){fprintf(stderr, "msgsnd failed\n");exit(-1);}printf("You write:%s\n", some_data.some_text);if(strncmp(some_data.some_text,"end",3)==0){running=0;}}if(msgctl(msgid,IPC_RMID,0)==-1){fprintf(stderr, "msgctl IPC_RMID failed\n");exit(-1);}return 0;}
0 0
- linux c读取tty和消息队列的使用demo
- linux c 消息队列的使用
- Linux _msg 消息队列 demo
- Linux消息队列的使用
- Linux C 消息队列和共享内存
- 【LINUX C】消息队列
- redis的消息队列和发布订阅demo
- linux 消息队列使用
- linux 使用消息队列
- Linux下的消息队列的使用
- 关于linux中消息队列的使用
- Linux消息队列的使用:实现server和client相互发送消息
- 使用消息和消息队列
- 使用消息队列读取模拟量的值
- 分布式消息队列的设计和使用
- 分布式消息队列的设计和使用
- 分布式消息队列的设计和使用
- linux c 消息队列 实例
- SPDIF
- 如何赚到100万?最有可能赚到100万的7个方法
- 几个JAVA集合中常用的接口学习:Collection、Iterator和Map
- Django实现的Web GUI的LTE频点和频率换算工具
- 用UpdateResource修改EXE文件图标的多源码(已修正) 注:转帖请包函作者信息.(作者:菜新)
- linux c读取tty和消息队列的使用demo
- 利用编辑距离计算文本相似性
- UC/OS II 学习笔记(一)
- python中的单链表操作
- 判断一个数是否为2的N次方问题
- 【Codeforces 652 D Nested Segments】+ 树状数组 + 离散化
- [工具代码]使JTextfield具有默认提示文字的功能
- 想看TCP/IP卷一
- Java实现多线程断点下载(下载过程中可以暂停)