#### 21.2.18 read-char-no-hang [Function] ¶

`read-char-no-hang` &optional input-stream eof-error-p eof-value recursive-p ⇒ char

#### Arguments and Values:: ¶

input-stream – an input stream designator. The default is standard input.

eof-error-p—a generalized boolean. The default is true.

eof-value—an object. The default is nil.

recursive-p—a generalized boolean. The default is false.

char—a character or nil or the eof-value.

#### Description:: ¶

read-char-no-hang returns a character from input-stream if such a character is available. If no character is available, read-char-no-hang returns nil.

If recursive-p is true, this call is expected to be embedded in a higher-level call to read or a similar function used by the Lisp reader.

If an end of file_2 occurs and eof-error-p is false, eof-value is returned.

#### Examples:: ¶

    ;; This code assumes an implementation in which a newline is not
    ;; required to terminate input from the console.
     (defun test-it ()
       (unread-char (read-char))
       (list (read-char-no-hang)
             (read-char-no-hang)
             (read-char-no-hang)))
    ⇒  TEST-IT
    ;; Implementation A, where a Newline is not required to terminate
    ;; interactive input on the console.
     (test-it)
     |>  |>>a<<|
    ⇒  (#\a NIL NIL)
    ;; Implementation B, where a Newline is required to terminate
    ;; interactive input on the console, and where that Newline remains
    ;; on the input stream.
     (test-it)
     |>  |>>a[<–~]<<|
    ⇒  (#\a #\Newline NIL)

#### Affected By:: ¶

*standard-input*, *terminal-io*.

#### Exceptional Situations:: ¶

If an end of file_2 occurs when eof-error-p is true, an error of type end-of-file is signaled .

#### See Also:: ¶

listen [Function]

#### Notes:: ¶

read-char-no-hang is exactly like read-char, except that if it would be necessary to wait in order to get a character (as from a keyboard), nil is immediately returned without waiting.