有名管道pipe函数:int pipe(int filedes[2]);
下面程序通过创建进程,父进程写入数据,子进程读取数据,从管道中读取数据。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>int main()
{int fd[2] = {0};int ret = pipe(fd);if (-1 == ret){perror("pipe");exit(1);}pid_t pid = fork();if (-1 == pid){perror("fork");exit(2);}if (0 == pid){//readchar buffer[32] = {0};while (1){close(fd[1]);//子进程读数据,关闭写入端if (-1 == read(fd[0], buffer, 32)){perror("read");exit(3);}if (strcmp("exit", buffer) == 0){close(fd[0]);exit(0);}}}else{//writechar buffer[32] = {0};while (1){close(fd[0]);//父进程写数据,关闭读取端scanf("%s", &buffer);if (-1 == write(fd[1], buffer, strlen(buffer))){perror("write");exit(4);}if (strcmp("exit", buffer) == 0){close(fd[1]);exit(0);}printf("recv : %s\n", buffer);memset(buffer, 0, 32);}}return 0;
}