⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 low_pipe.c

📁 linux环境利用管道进行通讯的例子
💻 C
字号:
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>

#define BUFSZ PIPE_BUF
void err_quit(char *msg);

int main(int argc, char *argv[])
{
  int fd[2];
  int fdin;
  char buf[BUFSZ];
  int pid, len;

  if((pipe(fd))<0) err_quit("pipe");

  if((pid=fork())<0) err_quit("fork");
  if(pid==0)
  {
    close(fd[1]);
    while((len=read(fd[0],buf,BUFSZ))>0)
      write(STDOUT_FILENO,buf,len);
    close(fd[0]);
  }
  else
  {
    close(fd[0]);
    if((fdin=open(argv[1],O_RDONLY))<0)
    {
      perror("open");
      write(fd[1],"123\n",4);
    }
    else
    {
      while((len=read(fdin,buf,BUFSZ))>0)
      write(fd[1],buf,len);
      close(fdin);
    }
    close(fd[1]);
  }
  waitpid(pid,NULL,0);
  exit(EXIT_SUCCESS);
}

void err_quit(char *msg)
{
  perror(msg);
  exit(EXIT_FAILURE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -