系统相关
首页 > 系统相关> > linux shell中的管道管理

linux shell中的管道管理

作者:互联网

我目前正在寻找如何将流水线管理成贝壳.
例如,在我的shell中,如果我输入“ls | wc | less”.这个操作的结果将是创建三个进程,即ws和更少.
ls的输出将通过管道输入到wc的输入输入,并且wc的输出将通过管道输入到输入输入的更少.

对我来说,这意味着在执行“ls | wc | less”时.较少的标准输入不是键盘,而是wc的输出.但是,对键盘的响应仍然会减少.为什么?我不明白,因为对我来说,因为它已被管道输入,因此对键盘不应该敏感.

有人有想法吗?
谢谢

解决方法:

来自更少的代码

#if HAVE_DUP
    /*
     * Force standard input to be the user's terminal
     * (the normal standard input), even if less's standard input 
     * is coming from a pipe.
     */
    inp = dup(0);
    close(0);
#if OS2
    /* The __open() system call translates "/dev/tty" to "con". */
    if (__open("/dev/tty", OPEN_READ) < 0)
#else
    if (open("/dev/tty", OPEN_READ) < 0)
#endif
        dup(inp);
#endif

它打开了来自/ dev / tty的直接流以及你的标准输入.

标签:bash,shell,linux,file-descriptor,pipeline
来源: https://codeday.me/bug/20190627/1305862.html