对于 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/