无名管道pipe的使用

xiaoxiao2021-02-28  16

有名管道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) { //read char 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 { //write char 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; }
转载请注明原文地址: https://www.6miu.com/read-200241.html

最新回复(0)