关于termcaps的练习,我必须编写一个程序,显示一个项目列表,让用户选择其中的一些。然后程序将输出用空格分隔的所选项目。该程序可以这样调用:
$> ./my_program foo1 foo2 foo3
或者像这样:
$> ls `my_program foo1 foo2 foo3`
我的程序在第一种情况下效果很好,但在第二种情况下,my_program的stdout被反引号拦截并且不会显示在终端上。我知道程序运行良好,因为如果我盲目地选择一些项目,我会得到ls的预期结果。
在我的程序中,除了以下内容外,我不能使用任何内置函数: •ioctl •tcsetattr •tcgetattr •tgetent •tgoto •tputs •tgetstr •tparm •打开 • 关 •写 •malloc • 自由 •阅读 • 出口 •信号
如果在第二种情况下调用,如何向用户显示my_program的标准输出?
编辑: 我找到的唯一选项是将所有内容输出到stderr并将所选项输出到stdout ...
答案 0 :(得分:3)
您可以在/dev/tty
中打开并写信至my_program
,它只会发送到终端而不是重定向的标准输出。