Lobsters | 📄 原文链接 | 2026-08-21 收录

夺回终端:管道输入之后,进程如何重新拿到键盘

来源:nishantjosh.dev — 2026-08-19

📋 概述

作者好奇一个问题:把文件 pipe 进 less 后按 j 仍能滚动,但 stdin 明明已经是一个耗尽了的管道,less 究竟从哪里读按键?文章用一个「程序自喂四次」的管线实验,拆解了类 Unix 系统中文件描述符的真相:stdin/stdout 属于进程而非管道,shell 会同时启动整条管线。作者进而揭示 fzf、less 等工具如何在 stdin 是管道时「夺回键盘」——通过直接打开 /dev/tty 或重新绑定 fd,而不是依赖被接管的标准输入。

🔑 核心要点

💡 金句

一旦看懂了文件描述符,管道就不再是黑盒。
← 返回 Lobsters 首页