创建一个子进程,子进程向无名管道中写入数据,父进程打印输出。

发布于:2023-01-04 ⋅ 阅读:(272) ⋅ 点赞:(0)

/*===============================================
 *   文件名称:pipe.c
 *   创 建 者:     
 *   创建日期:2022年08月29日
 *   描    述:
 ================================================*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    int pfd[2]={0};//定义两个无名管道数组
    int ret=pipe(pfd);//无名管道
    if(ret<0)
    {    perror("pipe");
        exit(-1);
    }


    pid_t pid= fork();//创建子进程
    if(pid<0)
    {
        perror("fork");
        exit(-1);
    }

    if(pid==0)
    {   
        int ret;
        char buf[64]={0};
        fgets(buf,64,stdin);
       ret= write(pfd[1],buf,strlen(buf));
       if(ret<0)
       {
        perror("write");
        exit(-1);
       }
    }
    else //父进程读入数据
    {
        int ret;
        char buf[64]={0};
        ret=read(pfd[0],buf,64);
        if(ret<0)
        {
          perror("read");
          exit(-1);

        }
        printf("read %dbyte:%s",ret,buf);//打印输出

    }
    return 0;

 


网站公告

今日签到

点亮在社区的每一天
去签到