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)创建该数据


  • 相关阅读:
    基数排序学习
    桶排序学习
    计数排序-不基于比较O(n)
    基尼系数
    拉普拉斯进行特征选择
    int ,long long等范围
    Codeforces780C
    51 Nod 1119
    字典树入门
    POJ 2531 暴力深搜
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7220614.html
Copyright © 2011-2022 走看看