C 显示在反勾号之间调用的程序的输出
对于一个关于termcaps的练习,我必须编写一个程序来显示项目列表,并让用户选择其中的一些项目。然后,程序将输出用空格分隔的选定项目。程序可以这样调用: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` 我的程序在第一种情况下运行良好,但在第
$> ./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写信真是太棒了!谢谢这只是为了学习,此代码不会在此范围之外使用;)