0

複数の子プロセスを生成するツールを作成しています。実際、ロジック/プロセス全体を高速化するための子プロセスの 3 つのレベル。

出力を端末に表示するために、Curses::UI を選択しました。curses UI オブジェクト/ウィジェットは、親子関係の各レベルで作成され、子プロセスの最後のレベルで操作されます。この複数レベルの子プロセスが、curses の表示に問題を引き起こしているようです。

すべての子/親プロセスで curses ui オブジェクトを 1 つだけ共有すれば安定すると思いました。

この共有を実現するために、Storable/Shareable モジュールを使用しようとしていますが、次のようなエラーのために実行できません。

quicode sub { │ │ exit; │ │ } でエラーが発生しました: 'exit' は (eval 99) 行 2、my_curser.pl 行 147 で操作マスクによってトラップされました │ code sub {────────────────── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ──────────┘終了; 'exit' は、(eval 99) 行 2 の my_curser で操作マスクによってトラップされました。

curses ui オブジェクトを複数のプロセスで共有することは可能ですか?

4

1 に答える 1

0

cursesは、C からでもプロセス間で確実に共有できない C とターミナルまたはターミナル エミュレータの状態に依存しており、UI::Curses. (端末には単一の「現在位置」/カーソル位置があります。異なるサブプロセスがディスプレイの異なる部分で同時にウィジェットを更新しようとするとどうなるかを考えてください。)そのため、これらのウィジェットをサブプロセス間で共有する方法はありません。 .

一般に、より適切な設計は、スレッドまたはプロセスを UI 専用にし、処理の他の側面を他のスレッド/プロセスに分散させることです。

于 2012-04-24T06:34:49.147 に答える