父进程不断发送消息到子进程,子进程收到消息后发送回应;
#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include "common.h" int main(void) { int subPid = 0; int fd1[2] = {0}, fd2[2] = {0}; char readBuffer[BUFFER_SIZE]; char writeBuffer[BUFFER_SIZE]; int readLength = 0; int writeLength = 0; int ret = 0; ret = pipe(fd1); if (-1 == ret) { perror(""); return -1; } ret = pipe(fd2); if (-1 == ret) { perror(""); return -1; } subPid = fork(); if (0 == subPid) { close(fd1[1]); close(fd2[0]); while (true) { readLength = read(fd1[0], readBuffer, BUFFER_SIZE); if (0 > readLength) { perror(""); return -1; } else { printf("CHILD: Received message \"%s\"!\n", readBuffer); strcpy(writeBuffer, "Replay from child!"); write(fd2[1], writeBuffer, strlen(writeBuffer)); } } } else { close(fd1[0]); close(fd2[1]); int sendCount = 0; while (true) { sprintf(writeBuffer, "Message from server (total: %d) !", ++sendCount); write(fd1[1], writeBuffer, strlen(writeBuffer)); readLength = read(fd2[0], readBuffer, BUFFER_SIZE); if (0 > readLength) { perror(""); return -1; } printf("PARENT: Received replay from child \"%s\"!\n", readBuffer); usleep(1000000); } } return 1; }