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