c - 显示在反引号之间调用的程序的输出

标签 c linux xterm termcap

对于 termcaps 的练习,我必须编写一个程序来显示项目列表并让用户选择其中的一些项目。然后程序将输出以空格分隔的所选项目。该程序可以这样调用:

$> ./my_program foo1 foo2 foo3

或者像这样:

$> ls `my_program foo1 foo2 foo3`

我的程序在第一种情况下运行良好,但在第二种情况下,my_program 的标准输出被反引号拦截,不会显示在终端上。我知道程序运行良好,因为如果我盲目地选择一些项目,我从 ls 得到了预期的结果。

在我的程序中,我不能使用任何内置函数,除了以下: • 读写控制 • tcsetattr • tcgetattr • 目标 • 转到 • 输出 • tgetstr • tparm • 打开 • 关闭 • 写 • malloc • 自由的 • 读 • 导出 • 信号

在第二种情况下调用时如何向用户显示 my_program 的标准输出?

编辑: 我找到的唯一选择是将所有内容输出到 stderr,并将所选项目输出到 stdout...

最佳答案

您可以在 my_program 中打开并写入 /dev/tty,它只会写入终端,不会写入重定向的标准输出。

关于c - 显示在反引号之间调用的程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506051/

相关文章:

bash - 如何以编程方式复制终端内容?

putty - ncurses: init_color() 无效

c - 如何确定哪个条件为真?

arrays - 不计算空格计算字符串长度

c - 使用函数用字母替换字符中的空值?

linux - 在 bash 中提取另一个字符串之后的字符串?

java - 服务器关闭时远程启动 GlassFish v3

linux - Atom 在 Ubuntu 15.10 上运行速度极慢 - 关于渲染器?

c - 如何测量计算时间

bash - 如何获取 tput smcup/rmcup 设置的屏幕状态?