#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
int fds[2];
int main(void){
if(-1 == pipe(fds)){
printf("pipe fail\r\n");
exit(0);
}
pid_t pid = fork();
if(pid == 0){
//child process
int nChild = 2;
printf("%d:child\r\n", nChild);
while(1){
char sBuffer[512] = { 0 };
int nLen = read(fds[0], sBuffer, 512);
printf("read:%d:%s\r\n", nLen, sBuffer);
}
printf("%d:exit\r\n", nChild);
}
else if(pid > 0){
//parent process
int nParent = 1;
printf("%d:parent\r\n", nParent);
int n = 3;
while(n-- > 0){
char sBuffer[10];
sprintf(sBuffer, "send my num:%d\n", n);
printf("%d:%s\n", nParent, sBuffer);
write(fds[1], sBuffer, strlen(sBuffer));
sleep(3);
}
close(fds[1]);
sleep(10);
printf("%d:exit\r\n", nParent);
}
else{
printf("fork error!\r\n");
exit(-1);
}
return 0;
}
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
int fds[2];
int main(void){
if(-1 == pipe(fds)){
printf("pipe fail\r\n");
exit(0);
}
pid_t pid = fork();
if(pid == 0){
//child process
int nChild = 2;
printf("%d:child\r\n", nChild);
while(1){
char sBuffer[512] = { 0 };
int nLen = read(fds[0], sBuffer, 512);
printf("read:%d:%s\r\n", nLen, sBuffer);
}
printf("%d:exit\r\n", nChild);
}
else if(pid > 0){
//parent process
int nParent = 1;
printf("%d:parent\r\n", nParent);
int n = 3;
while(n-- > 0){
char sBuffer[10];
sprintf(sBuffer, "send my num:%d\n", n);
printf("%d:%s\n", nParent, sBuffer);
write(fds[1], sBuffer, strlen(sBuffer));
sleep(3);
}
close(fds[1]);
sleep(10);
printf("%d:exit\r\n", nParent);
}
else{
printf("fork error!\r\n");
exit(-1);
}
return 0;
}