zoukankan      html  css  js  c++  java
  • 进程间管道通信

    //start from the very beginning,and to create greatness
    //@author: Chuangwei Lin
    //@E-mail:979951191@qq.com
    //@brief: 一个进程间管道通信的例子
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    int main(int argc, char const *argv[])
    {
        int result = -1;//创建管道结果
        int fd[2],nbytes;//文件描述符和字符个数
        pid_t pid;//进程pid值
        char string[] = "进程间管道通信";
        char readbuffer[80];//字符缓冲区
        //文件符1用于写,0用于读
        int* write_fd = &fd[1];
        int* read_fd = &fd[0];
        result = pipe(fd);//建立管道
        if(-1 == result)
        {
            printf("管道建立失败
    ");
            return -1;
        }
    
        pid = fork();//分叉进程
        if (-1 == pid)
        {
            printf("fork进程失败
    ");
            return -1;
        }
        if (0 == pid)//子进程
        {
            close(*read_fd);//关闭读端
            result = write(*write_fd,string,strlen(string));//向管道段写入字符
            return 0;
        }
        else//父进程
        {
            close(*write_fd);//关闭写端
    
            nbytes = read(*read_fd,readbuffer, sizeof(readbuffer));//从管道读数据
            printf("接收到%d个数据,内容为:%s
    ",nbytes,readbuffer);
        }
        return 0;
    }

    运行结果为:
    [root@localhost lcw20150805]# ./lcw_pipe
    接收到21个数据,内容为:进程间管道通信

  • 相关阅读:
    iOS9下App Store新应用提审攻略
    信息安全系统设计基础第十一周学习总结
    Linux第十一次学习笔记
    信息安全系统设计基础第十周学习总结
    Linux第八次学习笔记
    Linux第七次实验笔记
    家庭作业3.67
    Linux第六次学习笔记
    Linux第五次学习笔记
    Linux第四次学习笔记
  • 原文地址:https://www.cnblogs.com/sigma0-/p/12630527.html
Copyright © 2011-2022 走看看