(rontolisp) docs
← cl パッケージの関数

listen

(listen &optional stream)

指定された入力ストリーム (引数なしなら標準入力) から文字またはバイトを即座に読めるなら t、そうでなければ nil を返します。ブロックしません。これは available()/ready() に相当する問い合わせであり、プロトコル実装が予期しないデータを検出するために使います (cl-postgres は過大な SSL 応答の検出に用います)。

インタプリタと JVM ではソケットに対してカーネルの受信バッファを見るため、答えは正確です。WASM の --component バックエンドでもソケットに対しては正確ですが、理由が異なります。すでに読み込んだチャンクに未消費のバイトが残っているかを報告するもので、ホスト側で待機中のバイトはブロックせずには観測できません。文字列入力ストリームはすべてのバックエンドで残り文字の有無を答えます(unread した文字も数えます)。Preview 1 の WASM ではそれ以外の引数に対して listen はコンパイルエラーになります。非ブロッキングの問い合わせ手段が一切ないためです。

(listen)          ; => NIL, 標準入力に未読データがない場合