;; Call with standard output (print-int (current-output-port) 314159) ;; Redirection to a file. Note that the port is automatically flushed ;; (via force-output) before calling the C function, and that the C ;; function gets a temporary "FILE" stream, which is closed after the ;; call. So you can simply mix Scheme and C output. (with-output-to-file "test.out" (lambda () (display 4711) (newline) (print-int (current-output-port) 314159) (display 815) (newline))) ;; Redirection to a string or soft port won't work -- ;; we can only handle file ports. (catch #t (lambda () (with-output-to-string (lambda () (print-int (current-output-port) 314159)))) (lambda args (write args) (newline))) ;; Read from a file port. Note that it is a bad idea to mix Scheme and ;; C input because of buffering. (with-input-from-file "test.out" (lambda () (display (read-int (current-input-port))) (newline)))