无名管道练习

/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd.
File name:
Author:Jerey_Jobs    Version:0.1    Date:
Description:
Funcion List:
*****************************************************/

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <ctype.h>
void ToUpper(char *str);

int main()
{
    int pipe_fd[2];
 pid_t pid;
 char r_buf[100];
 char w_buf[100];
 char *p_wbuf;
 int r_num;
 int w_num;

 memset(r_buf,0,sizeof(r_buf));
 memset(w_buf,0,sizeof(w_buf));
 p_wbuf = w_buf;

 if(pipe(pipe_fd) < 0)
 {
  perror("pipe create error\n");
  exit(-1);
 }

 if((pid = fork()) == 0)
 {
  close(pipe_fd[1]);        //关闭写端
  sleep(3);

  r_num = read(pipe_fd[0],r_buf,100);
  ToUpper(r_buf);
  printf("read num is %d the data read from the pipe is %s\n",strlen(r_buf),r_buf);
  close(pipe_fd[0]);
  exit(0);
 }
 else if(pid > 0)
 {
        close(pipe_fd[0]);
  strcpy(w_buf,"asdfEDfasd");
        if(write(pipe_fd[1],w_buf,100) != 1)
  {
   printf("parent write over !\n");
  }
  close(pipe_fd[1]);
  printf("parent close pipe_fd[1] successfully\n");
  sleep(5);
 }
    return 0;
}

void ToUpper(char *str)
{
    while(*str)
 {
  *str = toupper(*str);
  str++;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值