我已经写了一个基于libcurses的ascii ui,它在程序退出时将文本写入标准输出。为什么libncurses ui在捕获到Bash变量时不显示?
如果我单独执行程序,像这样......
> ./test
...的UI显示。
但是,如果我尝试捕捉程序输出到猛砸变量,像这样......
> foo=$(./test)
...用户界面不显示,但是在Bash变量捕获预期的输出。
有谁知道为什么这种行为是这样的?有没有办法让ui在尝试将其stdout捕获到Bash变量时出现?
守则
#include <iostream>
#include <curses.h>
#include <unistd.h>
int main(int argc, char* argv[])
{
WINDOW* pWindow = initscr();
keypad(pWindow, TRUE);
curs_set(0);
nodelay(pWindow, FALSE);
mvwprintw(pWindow, 5, 5, "hello, world!");
mvwprintw(pWindow, 6, 5, "hello, fold!");
mvwprintw(pWindow, 7, 5, "hello, toad!");
for (int i = 0; i < 5; ++i)
{
mvwprintw(pWindow, 5 + i, 1, "==>");
refresh();
usleep(500000);
mvwprintw(pWindow, 5 + i, 1, " ");
refresh();
}
endwin();
std::cout << "bar" << std::endl;
}
你知道有什么办法可以实现我想要做的事情?即显示ui,然后立即自动将stdout捕获到Bash变量中?我对* nix和/或Bash没有足够的专业知识来思考如何做到这一点。 – StoneThrow
“我宁愿只为我的程序添加一个选项,该选项将一个文件写入我的输出中,然后bash脚本可以在我的程序运行后打开该文件。” - 得到你。谢谢。 – StoneThrow
你的答案大多不正确。 –