进程间的通信可以通过管道的方式,而这种方式有一个特点,就是进程在read管道的内容时会将进程阻塞
#include<unistd.h>
#include<memory.h>
#include<errno.h>
#include<sys/wait.h>
#include<stdio.h>
#include<stdlib.h>
int main(){
int accept_to_sent[2];
int sent_to_accept[2];
pid_t pid;
char buf_r[100];
char* p_wbuf;
int r_num;
memset(buf_r,0,sizeof(buf_r)); //数组中的数据清0;
if(pipe(accept_to_sent)<0 || pipe(sent_to_accept)<0){
printf("pipe create error\n");
return -1;
}
pid=fork();
while( pid == 0 ){
if((r_num=read(accept_to_sent[0],buf_r,100))>0){// 读管道中的内容,阻塞进程
printf("%s sure\n" , buf_r);
}else{
printf("read accept_to_sent error\n");
}
if(write(sent_to_accept[1],"sented",6) == -1){//向管道中写内容
printf("sent code error!\n");
}
sleep(1);
}
while(pid > 0){
if(write(accept_to_sent[1],"number",6) == -1){
printf("accept code error!\n");
}
sleep(1);
if((r_num=read(sent_to_accept[0],buf_r,100))>0){//阻塞进程
printf("accept get %s\n",buf_r);
}else{
printf("read sent_to_accept error\n");
}
}
}