簡體   English   中英

IPC :: Open3如何為CHLD_IN啟用自動刷新

[英]How does IPC::Open3 enable autoflush for CHLD_IN

IPC :: Open3的文檔指出:

The CHLD_IN will have autoflush turned on

但是源代碼中沒有任何內容提到IO::Handle::autoflush 模塊使用什么機制為CHLD_IN打開自動CHLD_IN

使用以下行禁用緩沖

select((select($handles[0]{parent}), $| = 1)[0]); # unbuffer pipe

可以改寫成

my $old_fh = select($handles[0]{parent});
$| = 1;
select($old_fh);

在Perl中禁用輸出緩沖的傳統方法是通過$| 變量。 來自man perlvar

  • 處理->自動沖洗(EXPR)
  • $ OUTPUT_AUTOFLUSH
  • $ |

如果設置為非零,則在當前選擇的輸出通道上每次寫入或打印后立即強制刷新。 缺省值為0(無論通道是否真正被系統緩沖; $ |僅告訴您是否在每次寫操作后都明確要求Perl刷新)。 如果輸出到終端,則STDOUT通常將被行緩沖,否則將被塊緩沖。 設置此變量主要在輸出到管道或套接字時很有用,例如在rsh下運行Perl程序並希望看到正在發生的輸出時。 這對輸入緩沖沒有影響。 參見getc。 請參閱選擇如何選擇輸出通道。 另請參見IO :: Handle。

助記符:當您希望管道變熱時。

設置$| 對“當前選定的輸出通道”起作用,該通道以select的一個參數形式設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM