12.08

本文详细介绍了如何使用C语言中的管道进行父子进程间通信,以及通过标准IO和文件IO进行文件拷贝,同时展示了多进程和多线程在文件操作中的应用,还涉及了互斥锁、无名信号量和条件变量在生产者消费者问题中的实现。
摘要由CSDN通过智能技术生成

1.

1.1

#include "myhead.h"
void *task(void *arg){
	int rfd=-1;//创建一个管道
	if((rfd=open("./myfifo1",O_RDONLY))==-1){
		perror("rfd open error");
	}
	char rbuf[128]="";
	while(1){
		bzero(rbuf,sizeof(rbuf));
		read(rfd,rbuf,sizeof(rbuf));
		printf("\n收到一条消息:%s\n",rbuf);
		if(strcmp(rbuf,"quit")==0){
			break;
		}
	}
	close(rfd);
	pthread_exit(NULL);
}	

int main(int argc, const char *argv[])
{
	pthread_t tid=-1;//主线程
	if(pthread_create(&tid,NULL,task,NULL)!=0){
		printf("tid create error");
		return -1;
	}

	
	int wfd=-1;
	if((wfd=open("./myfifo",O_WRONLY))==-1){
		perror("wfd open error");
		return -1;
	}
	char wbuf[128]="";
	while(1){
		printf("请输入>>>");
		fgets(wbuf,sizeof(wbuf),stdin);
		wbuf[strlen(wbuf)-1]=0;
		write(wfd,wbuf,sizeof(wbuf));
		if(strcmp(wbuf,"quit")==0){
			break;
		}
	}
	close(wfd);
	pthread_join(tid,NULL);
	return 0;
}
#include "myhead.h"
void *task(void *arg){
	int wfd=-1;
	if((wfd=open("./myfifo1",O_WRONLY))==-1){
		perror("wfd open error");
	}
	char wbuf[128]="";
	while(1){
		printf("请输入");
		fgets(wbuf,sizeof(wbuf),stdin);
		wbuf[strlen(wbuf)-1]=0;
		write(wfd,wbuf,sizeof(wbuf));
		if(strcmp(wbuf,"quit")==0){
			break;
		}
	}
	close(wfd);
	pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{
	pthread_t tid=-1;
	if(pthread_create(&tid,NULL,task,NULL)!=0){
		printf("tid create error\n");
		return -1;
	}


	int rfd=-1;
	if((rfd=open("./myfifo",O_RDONLY))==-1){
		perror("rfd open error");
		return -1;
	}
	char rbuf[128]="";
	while(1){
		bzero(rbuf,sizeof(rbuf));
		read(rfd,rbuf,sizeof(rbuf));
		printf("\n收到一条消息:%s\n",rbuf);
		if(strcmp(rbuf,"quit")==0){
			break;
		}
	}
	close(rfd);
	pthread_join(tid,NULL);
	return 0;
}

2.使用无名管道完成父子进程间的通信

3使用标准IO完成两个文件的拷贝

4.使用文件IO实现两个文件的拷贝

5.使用多进程完成两个文件的拷贝

6.使用多线程完成两个文件的拷贝

7.将互斥锁的案例重新写一遍

8.将无名信号量实现生产者消费者程序重新实现一遍

9.将条件变量实现生产者消费者程序重新实现一遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值