1

入力チャネルを閉じた後、いくつかのアクションを実行する必要があります。man fileevent 言います:

チャネルが閉じられると、ファイル イベント ハンドラも自動的に削除されます。

そのため、チャネルが閉じられた場合、これを処理するためにハンドラーが呼び出されない可能性があります。子プロセスから出力を読み込もうとすると、実際にそれを見ることができます: ハンドラーの前の呼び出しはまだ [eof $fd] を false と見なし、次のハンドラーは決して呼び出されません。

私が今想像できる唯一の方法は、$fd がまだ開いているかどうかをチェックする定期的なウォッチドッグのようなハックを実装することですが、これはかなり汚れています。また、他の読み取りチャネルが開いているときに $fd が同じ値を取得しないことを確認できますか?

4

1 に答える 1