1、利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能。
来源:互联网 发布:冠新软件下载 编辑:程序博客网 时间:2024/05/22 00:13
fifo1源文件
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>void* readfifo(){const char *sfifoname = "fifo1";int fd = open(sfifoname, O_RDONLY);if (fd == -1){printf("open %s failed, %s\n", sfifoname, strerror(errno));return NULL;}int len = 0;char buf[128];while (1){memset(buf, 0, sizeof(buf));len = read(fd, buf, sizeof(buf));if (len > 0){printf("%s\n", buf);}else{break;}}close(fd);return NULL;}void* writefifo(){const char *sfifoname = "fifo2";int fd = open(sfifoname, O_WRONLY);if (fd == -1){printf("open %s failed, %s\n", sfifoname, strerror(errno));return NULL;}char buf[128];while (1){memset(buf, 0, sizeof(buf));read(STDIN_FILENO, buf, sizeof(buf));write(fd, buf, sizeof(buf));}close(fd);return NULL;}int main(int arg, char *args[]){pthread_t thr_d1, thr_d2;pthread_create(&thr_d1, NULL, readfifo, NULL);pthread_create(&thr_d2, NULL, writefifo, NULL);pthread_join(thr_d1, NULL);//主线程挂起,等待thr_d1退出pthread_join(thr_d1, NULL);//主线程挂起,等待thr_d2退出return 0;}
fifo源文件
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>void* readfifo(){const char *sfifoname = "fifo2";int fd = open(sfifoname, O_RDONLY);if (fd == -1){printf("open %s failed, %s\n", sfifoname, strerror(errno));return NULL;}int len = 0;char buf[128];while (1){memset(buf, 0, sizeof(buf));len = read(fd, buf, sizeof(buf));if (len > 0){printf("%s\n", buf);}else{break;}}close(fd);return NULL;}void* writefifo(){const char *sfifoname = "fifo1";int fd = open(sfifoname, O_WRONLY);if (fd == -1){printf("open %s failed, %s\n", sfifoname, strerror(errno));return NULL;}char buf[128];while (1){memset(buf, 0, sizeof(buf));read(STDIN_FILENO, buf, sizeof(buf));write(fd, buf, sizeof(buf));}close(fd);return NULL;}int main(int arg, char *args[]){pthread_t thr_d1, thr_d2;pthread_create(&thr_d1, NULL, readfifo, NULL);pthread_create(&thr_d2, NULL, writefifo, NULL);pthread_join(thr_d1, NULL);pthread_join(thr_d2, NULL);return 0;}
makefile一定要注意添加-lpthread
.SUFFIXES: .c .oCC=gccASRCS=myfifo1.cBSRCS=myfifo2.cAOBJS=$(ASRCS:.c=.o)BOBJS=$(BSRCS:.c=.o)AEXEC=myfifo1BEXEC=myfifo2all:$(AOBJS) $(BOBJS)$(CC) -o $(AEXEC) $(AOBJS) -lpthread$(CC) -o $(BEXEC) $(BOBJS) -lpthread@echo '-------------ok--------------'.c.o:$(CC) -Wall -g -o $@ -c $< clean:rm -f $(AOBJS)rm -f $(BOBJS)rm -f core*
0 0
- 1、利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能。
- 利用两个有名管道实现类似聊天功能
- 利用有名管道,实现两个独立进程间的通讯
- linux中利用有名管道实现进程之间的通信
- 利用有名管道实现进程间通信(聊天小程序)
- 使用共享实现两个进程之间的聊天-使用有名信号量实现同步
- Linux初学,利用共享内存,有名管道,select实现两个用户之间的自由对话。
- Linux下的有名管道(05)---使用两个管道实现两个进程之间的通信(对讲机模式)
- Linux下的有名管道(06)---使用两个管道实现两个进程之间的通信(手机模式)
- 通过有名管道实现两个进程单向通讯
- 1.利用有名管道和多线程实现双方互相通信
- 利用有名管道&无名管道 实现 简单的多人聊天
- 利用管道技术在两个进程之间通讯.
- 两个有名管道实现qq通信
- 两个有名管道实现qq通信 续
- 极简聊天——有名管道实现进程间通信
- 利用Python实现多线程聊天功能
- 有名管道实现进程间通信。
- C#深入浅出全接触(四)
- Unity3d-Vuforia-Android 开发环境搭建
- tomcat机器重启自启动
- mysql授权某主机
- 一网友学Android的经验及弯路提醒
- 1、利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能。
- java反射机制
- 【MVC5】6.从控制器访问您的模型的数据
- <stdlib.h>包括的函数讲解 (
- DNS解析过程详解
- vs2010字体和颜色的舒适设置
- constructor-arg的使用以及Properties的使用
- Linux安全体系的文件权限管理
- rand_mode使用注意