2012-04-24 33 views
0

我寫一個工具,它派生多個子進程。事實上有三個子級進程來加速整個邏輯/進程。份額perl的詛咒在多個子UI對象變量處理

要顯示在終端的輸出我所選擇的詛咒:: UI。 curses ui對象/小部件在父/子關係的每個級別上創建,並在子級進程的最後一級進行操作。這種多級別的子進程似乎會導致curses顯示問題。

我認爲這將是穩定的,如果我只是共用一個在所有子/父進程詛咒UI對象。

爲了實現這種共享,我想使用存儲/共享的模塊,但沒有能夠得到它運行,由於像這樣的錯誤:

quicode子{││ 退出; │ │}引起的一個錯誤: '退出' 在(EVAL 99)線2由操作掩碼被困在my_curser.pl線147│ 代碼子{──────────────── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ────────────┘ exit; }引起的一個錯誤: '退出' 在(EVAL 99)線2由操作掩碼被困在my_curser.pl線147 │ode子{│ │出口;

是否有可能跨越複式進程共享詛咒UI對象?

回答

0

curses依賴於C和這是不連選自C進程之間可靠地共享終端或終端仿真的狀態,並且不Perl的包裝如UI::Curses可見。 (終端具有一個「當前位置」/光標位置;考慮如果不同的子過程試圖同時更新顯示的不同部分中的小部件,會發生什麼情況)。因此,您無法在子過程之間共享這些小部件。

通常,更好的設計是將線程或進程專用於UI,並將處理的其他方面分配給其他線程/進程。