C 显示在反勾号之间调用的程序的输出

C 显示在反勾号之间调用的程序的输出,c,linux,xterm,termcap,C,Linux,Xterm,Termcap,对于一个关于termcaps的练习,我必须编写一个程序来显示项目列表,并让用户选择其中的一些项目。然后,程序将输出用空格分隔的选定项目。程序可以这样调用: $> ./my_program foo1 foo2 foo3 $> ls `my_program foo1 foo2 foo3` 或者像这样: $> ./my_program foo1 foo2 foo3 $> ls `my_program foo1 foo2 foo3` 我的程序在第一种情况下运行良好,但在第

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

$> ./my_program foo1 foo2 foo3
$> ls `my_program foo1 foo2 foo3`
或者像这样:

$> ./my_program foo1 foo2 foo3
$> ls `my_program foo1 foo2 foo3`
我的程序在第一种情况下运行良好,但在第二种情况下,我的_程序的stdout被backticks截获,不会显示在终端上。我知道程序运行得很好,因为如果我盲目地选择一些项目,我从ls获得了预期的结果

在我的程序中,我不能使用任何内置函数,以下情况除外: •ioctl •tcsetattr •tcgetattr •tgetent •tgoto •TPUT •tgetstr •tparm •开放式 •关闭 •写作 •马洛克 •免费 •阅读 •退出 •信号

在第二种情况下调用时,如何向用户显示我的_程序的标准输出

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

您可以在
my_程序中打开并写入
/dev/tty
,它将只发送到终端,而不发送到重定向的stdout。

您可以在
my_程序中打开并写入
/dev/tty
,并且它将只发送到到终端而不是重定向的标准输出。

使用终端显示的程序不是设计用于反引号(或者更好的是,
$(…)
符号)。至少,它可能会根据其标准输出是否为终端而改变其操作。因为这个练习是关于使用终端显示器的,所以你可能需要有创造性。也许您应该安排使用
/dev/tty
对用户进行I/O操作,将stdout严格用于非交互式内容。但必要的设计是……次优的、非标准的、令人讨厌的。提醒我不要使用这个程序。(哦,再想想,你就不必提醒我了……)给/dev/tty写信真是太棒了!谢谢这只是为了学习,此代码不会在此范围之外使用;)使用终端显示的程序不是为反引号(或者更好的是,
$(…)
符号)设计的。至少,它可能会根据其标准输出是否为终端而改变其操作。因为这个练习是关于使用终端显示器的,所以你可能需要有创造性。也许您应该安排使用
/dev/tty
对用户进行I/O操作,将stdout严格用于非交互式内容。但必要的设计是……次优的、非标准的、令人讨厌的。提醒我不要使用这个程序。(哦,再想想,你就不必提醒我了……)给/dev/tty写信真是太棒了!谢谢这只是为了学习,此代码不会在此范围之外使用;)