您现在的位置是:主页 > news > 高港区企业网站建设/数据分析软件哪个最好用

高港区企业网站建设/数据分析软件哪个最好用

admin2025/6/25 7:47:54news

简介高港区企业网站建设,数据分析软件哪个最好用,建设网站有哪些好处和坏处,长沙做产检玛丽亚m网站题目:利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能 思路:关键在于建立两个有名管道,利用多线程技术,进程A中线程1向管道A写数据,进程B中线程2从管道A读数据&#xff0c…

高港区企业网站建设,数据分析软件哪个最好用,建设网站有哪些好处和坏处,长沙做产检玛丽亚m网站题目:利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能 思路:关键在于建立两个有名管道,利用多线程技术,进程A中线程1向管道A写数据,进程B中线程2从管道A读数据&#xff0c…
题目:利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能
思路:关键在于建立两个有名管道,利用多线程技术,进程A中线程1向管道A写数据,进程B中线程2从管道A读数据,进程A线程2从管道B中读数据,进程B中线程1往管道B中写数据。
//利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能
//进程A
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>//从管道1中读数据
void * Threadread(void * arg)
{//open the fifoint fd = 0;//open the fifo in read and write mode--以读写方式打开管道fd = open("/home/test/1/fifo1", O_RDONLY);if (fd == -1){printf("open the fifo failed ! error message :%s\n", strerror(errno));return NULL;}char buf[100] = { 0 };//从管道中读数据while (read(fd, buf, sizeof(buf)) > 0){printf("%s", buf);memset(buf, 0, sizeof(buf));}close(fd);return NULL;
}//往管道2中写数据
void * ThreadWrite(void * arg)
{//open the fifoint fd = 0;//open the fifo in read and write mode--以读写方式打开管道fd = open("/home/test/1/fifo2", O_WRONLY);if (fd == -1){printf("open the fifo failed ! error message :%s\n", strerror(errno));return NULL;}char buf[100] = { 0 };while (1){//往标准输入上读数据read(STDIN_FILENO, buf, sizeof(buf));//在管道中写数据
        write(fd, buf, strlen(buf));memset(buf, 0, sizeof(buf));}close(fd);return NULL;
}int main(int arg, char * args[])
{//两线程共用一个文件描述符
    pthread_t thr1, thr2;//创建读数据线程if (pthread_create(&thr1, NULL, Threadread, NULL) != 0){printf("create thread is failed ! error mesage :%s\n", strerror(errno));return -1;}//创建写数据线程if (pthread_create(&thr2, NULL, ThreadWrite, NULL) != 0){printf("create thread is failed ! error mesage :%s\n", strerror(errno));return -1;}//等待两线程都返回 关闭文件描述符
    pthread_join(thr1, NULL);pthread_join(thr2, NULL);return 0;
}
.SUFFIXES:.c .o
CC=gcc
SRCS1=tec01.c
SRCS2=tec02.c
OBJS1=$(SRCS1:.c=.o)
OBJS2=$(SRCS2:.c=.o)
EXEC1=a
EXEC2=bstart:$(OBJS1) $(OBJS2)$(CC) -lpthread -o $(EXEC1) $(OBJS1)$(CC) -lpthread -o $(EXEC2) $(OBJS2)@echo "^_^-----OK------^_^"
.c.o:$(CC) -Wall -g -o $@ -c $<
clean:rm -f $(OBJS1)rm -f $(OBJS2)rm -f $(EXEC1)rm -f $(EXEC2)