Łuk*_*Lew 3 bash terminal stdin
我正在做标准重定向:
$ cat file.txt | /usr/bin/program
Run Code Online (Sandbox Code Playgroud)
但是如果我直接在终端和复制粘贴输入中运行它,程序的行为就会有所不同。当输入是终端时,它会显示一个进度条。无论如何,我想要进度条。
简而言之,如何“欺骗”输入来自终端而不是从文件重定向的程序?
使用该expect程序可能是最简单的;它为您完成大部分必要的工作。
必要的工作是繁琐的。它涉及使用伪 ttys,这些设备看起来像终端这样的程序。如果您要自己动手,那么您需要了解的 POSIX 系统调用是:
该posix_openpt()接口是相对较新的(第6期,与第4期,第2版对于列出的其它功能相比)。如果您的系统没有posix_openpt(),您需要自己找一本 Unix 书籍(可能是 Stevens 或 Rochkind)来了解如何打开 pty 的主端,或者仔细阅读您的系统手册。但是,posix_openpt()上面链接中的基本原理也可能有所帮助 - 它也有使用其他功能的指南。Linux有posix_openpt(); Mac OS X 和 BSD 系统通常也是如此。
图书:
W Richard Stevens,Stephen A Rago Unix 环境中的高级编程,第 3 版
Marc J Rochkind 高级 Unix 编程,第二版
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |