博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下c编程之无名管道pipe()函数
阅读量:2240 次
发布时间:2019-05-09

本文共 1135 字,大约阅读时间需要 3 分钟。

有名管道与无名管道是相对的,今天我们就来说说无名管道pipe吧!

无名管道与fork的使用:

下面我们还是通过一个小小的例子来说明一下无名管道吧!

#include<stdio.h>

#include<unistd.h>
#include<string.h>
#include<sys/wait.h>
#include<stdlib.h>
int main()
{
 pid_t pid;
 char inf[30];
 int fd[2],status;
 float result=0;
 char buf[30];
 char delim[]=" ";
 char *argv[3]={NULL};
 pipe(fd);
  pid=fork();
  
  if(pid==-1)
  {
   printf("fail");
  }
  else if(pid==0)
  {
   int i=0;
   int h,w;
   close(fd[1]);
   while(1)
   {
    read(fd[0],buf,10);
    argv[0]=strtok(buf,delim);
    if(strcmp(buf,"exit")==0)
                                {
                                        exit(1);
                                }
    while(argv[i]!=NULL)
    {
     argv[++i]=strtok(NULL,delim);
    }
    //slprintf();各种类型转换成字符串类型
    //atoi  atoul atof
    h=atoi(argv[0]);
    w=atoi(argv[1]);
    result=w/(h*h/10000);
    printf("result=%.2f\n",result);
    if(result>25)
    {
     printf("胖啦!\n");
    }
    else if(result<25)
    {
     printf("瘦啦!\n");
    }
    else
    {
      printf("保持体形!\n");
    }
   }
  }
  else
  { 
   close(fd[0]);
   while(1)
   {
    printf("please input your height and weight\nif out,please 'exit'\n");
    gets(inf); 
    write(fd[1],inf,strlen(inf)+1);
    //signal(status,);
     sleep(1);
                                if(waitpid(pid,NULL,WNOHANG)>0)
                                {
                                        exit(1);
                                }

   }

  }
return 0;
}

1.fork一个父子进程

2.父进程进行写入,子进程输出

3.由于子进程是父进程的复制,所以在使用管道读写的时候要注意,

父进程要关闭管道的读close(fd[0]),

子进程要关闭管道的写close(fd[1]);

转载地址:http://woqbb.baihongyu.com/

你可能感兴趣的文章
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>