FFI Callback stdio

How can I do I/O to stdin/out/err in an FFI callback? Is it simply impossible (as the docs would lead me to believe, at least for the CS backend)?
I don't care about if anything on the current OS thread blocks during the callback.

Using Racket-level I/O in an FFI callback is possible only in limited cases. Using a pipe from make-pipe or a byte string should be ok, as long as there's no contention with other Racket threads or as long as it's always used in atomic mode. Anything that can block, however, such an OS-level pipe, is not going to work in general; the scheduling layer is not able to block in atomic mode. A port for a regular file probably can work if used in an atomic region, but it's possible that I'm forgetting an obstacle there.