zoukankan      html  css  js  c++  java
  • linux学习:进程间通信—管道

    1、进程间通信当中一种比較简单的方法是管道操作

    /*
     ============================================================================
     Name        : Test.c
     Author      : wangchuan
     Version     :
     Copyright   : Your copyright notice
     Description : Hello World in C, Ansi-style
     ============================================================================
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #include <string.h>
    #include <unistd.h>
    
    #include <sys/types.h>
    #include <sys/wait.h>
    
    int main(int argc,char* argv[]) {
    	int fd[2],cld_pid,len;
    	char buf[200];
    	if(pipe(fd) == -1){
    		perror("创建管道出错");
    		exit(1);
    	}
    	if((cld_pid=fork()) == 0){
    		close(fd[1]);
    		len = read(fd[0],buf,sizeof(buf));
    		buf[len] = 0;
    		printf("子进程从管道中读取的数据是:%s ",buf);
    		exit(0);//结束子进程
    	}
    	else{
    		close(fd[0]);
    		sprintf(buf,"父进程为子进程(PID=%d)创建该数据",cld_pid);
    		write(fd[1],buf,strlen(buf));
    		exit(0);//结束父进程
    	}
    	return 0;
    }
    

    编译执行输出例如以下:

    子进程从管道中读取的数据是:父进程为子进程(PID=7309)创建该数据


  • 相关阅读:
    1月5日学习记录||1月8日学习
    1.1学习记录|1.2日学习记录|1.3日
    RNA-seq数据为什么要去噪
    12.16日学习记录
    12.15学习记录
    transformer和bert简要学习
    关系抽取学习
    12.14周六学习记录
    12.5日学习记录
    12.4周三学习记录
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7220614.html
Copyright © 2011-2022 走看看