当前位置:  技术问答>linux和unix

关于pipe

    来源: 互联网  发布时间:2016-06-05

    本文导语:  自己要做个一shell,并且要有管道的功能 比如ls | wc这样的需要pipe之后fork 可是要是实验ls | wc | wc这样可以建立多个管道的功能需要pipe几次? 是有几个 "|" 就pipe几次?还是只需要pipe一次,然后通过多次fork就可...

自己要做个一shell,并且要有管道的功能

比如ls | wc这样的需要pipe之后fork
可是要是实验ls | wc | wc这样可以建立多个管道的功能需要pipe几次?

是有几个 "|" 就pipe几次?还是只需要pipe一次,然后通过多次fork就可以实现了?

|
貌似大致如下:

#include 

int fd[2];

void run_ls()
{
    close(fd[0]);
    close(fd[1]);
    execve("/bin/ls", NULL, NULL);
}

void run_wc()
{
    close(fd[0]);
    close(fd[1]);
    execve("/usr/bin/wc", NULL, NULL);
}

int main()
{
    pipe(fd);
    
    if (fork() > 0) {
        dup2(fd[1], 1);
        run_ls();
    }
    else {
     dup2(fd[0], 0);
     close(fd[0]);
     close(fd[1]);
     pipe(fd);
    
   if (fork() > 0) {
       dup2(fd[1], 1);
            run_wc();
        }
        else {
            dup2(fd[0], 0);
           run_wc();
        }
    }
    return 0;
}

|


the design of unix operating system 

上有讲,就是把 read到 数据重新write,对象可能是终端,可能是 文件描述符?

不知道对不?

|
继续,在else 
       run_wc();
在里面fork

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.nio.channels类pipe的类成员方法: pipe定义及介绍
  • 请问,pipe 源码中,为何没有 pipe(...) 这个函数?
  • java命名空间java.nio.channels类pipe.sourcechannel的类成员方法: pipe.sourcechannel定义及介绍
  • 一个c程序运行的时候提示Broken pipe,这个Broken pipe是什么意思?
  • java命名空间java.nio.channels类pipe.sinkchannel的类成员方法: pipe.sinkchannel定义及介绍
  • pipe(a)了一次,又PIPE(a)了一次,是建立了两个管道,还是同一个?
  • java命名空间java.io类pipedinputstream的类成员方法: pipe_size定义及介绍
  • 请问,FIFO的读写是否有字节数限制,PIPE_BUF如何使用?
  • java命名空间java.nio.channels类pipe的类成员方法: sink定义及介绍
  • Pipes
  • java命名空间java.nio.channels类pipe的类成员方法: open定义及介绍
  • pipe是否需要锁定的问题
  • socket下调用write后出现:Broken pipe错误
  • 请问,pipe()这个管道建立函数在哪里实现的?
  • pipe的性能如何?主要指的是延时...
  • 如何设定pipe使用的buffer大小
  • Pipe Viewer
  • 请问关于pipe通信的问题
  • socket编程中的Broken pipe的问题
  • linux 下pipe break 错误的修复
  • pipe不成功的原因有哪些啊?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3