如何管道/重定向 NCurse 命令的最终标准输出?
我有一个显示 Ncurses 内容的命令(initscr
、printw
、addch
、...)。没关系。
最后(endwin
),我想“输出”(std::cout <<“some string”
)一个由其他命令处理的字符串(或者可能重定向到流)。 我想要做这样的事情:
my-ncurse-command | any-other-command
my-ncurse-command > some-stream
问题是:我的ncurses显示是由管道或重定向捕获的,而不仅仅是最终的字符串。
有办法允许吗? 谢谢。
I have a command that displays Ncurses stuffs (initscr
, printw
, addch
, ...). That's okay.
At the end (endwin
), I want to "output" (std::cout << "some string"
) a string to be processed by other command (or maybe redirected to a stream).
I want to do something like this :
my-ncurse-command | any-other-command
my-ncurse-command > some-stream
Problem is : my ncurses display is captured by the pipe or the redirect, not only the final string.
Is there a way to allow that ?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
newterm()
,而不是initscr()
。如果您已经在使用newterm
,那么只需提供与stdout
不同的输出流即可。initscr()
相当于:so
和
endwin()
之后:或者,使用智能指针不必
std::fclose
手动新输出流:不采用标准库函数地址(严格禁止)的版本可能如下所示:
Instead of
initscr()
, usenewterm()
. If you are already usingnewterm
it's just a matter of supplying a different output stream thanstdout
.initscr()
is equivalent to:so
and after
endwin()
:Alternatively, use a smart pointer to not have to
std::fclose
the new output stream manually:A version not taking the address of a standard library function (which is strictly prohibited) could look like this: