我已經寫了一個基於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
你的答案大多不正確。 –