gpt4 book ai didi

bash - 我如何欺骗 stdin 是终端(而不是重定向文件)的程序?

转载 作者:行者123 更新时间:2023-11-29 09:35:40 24 4
gpt4 key购买 nike

我正在做标准重定向:

$ cat file.txt | /usr/bin/program

但如果我直接在终端中运行程序并复制粘贴输入,程序的行为会有所不同。当输入是终端时,它会显示一个进度条。无论如何,我想要进度条。

简而言之,我如何“欺骗”程序输入来自终端而不是从文件重定向?

最佳答案

使用 expect 可能是最简单的程序;它会为您完成大部分必要的工作。

必要的工作很繁琐。它涉及使用伪 ttys,伪 ttys 是像终端一样查找程序的设备。如果您打算自己推出,那么您需要了解的 POSIX 系统调用是:

posix_openpt() 接口(interface)相对较新(第 6 期,与第 4 期相比,列出的其他功能为第 2 版)。如果您的系统没有posix_openpt(),您需要找一本 Unix 书籍(可能是 Stevens 或 Rochkind)来了解如何打开 pty 的主端,或者仔细阅读你的系统手册。但是,上面链接中 posix_openpt() 的基本原理也可能有所帮助——它还有使用其他函数的指南。 Linux 有 posix_openpt(); Mac OS X 和 BSD 系统通常也是如此。

书籍:

关于bash - 我如何欺骗 stdin 是终端(而不是重定向文件)的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15058863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com