The below also works, where we write and read sexprs instead of lines. However, symbols and numbers must explicitly be terminated, for example by whitespace or ), as the ports are streams. diff --git a/socketpair-test.scm b/socketpair-test.scm --- a/socketpair-test.scm +++ b/socketpair-test.scm @@ -4,19 +4,19 @@ (define-values (ip op ic oc) (unix-pair)) (process-fork (lambda () (let ((p (current-process-id)) - (r (read-line ic))) + (r (read ic))) (print "pid " p " read: " r) - (let ((w (number->string (+ 1 (string->number r))))) + (let ((w (+ 1 r))) (print "pid " p " write: " w) - (write-line w oc) + (write w oc) (newline oc) (flush-output oc) - (print (read-line ic)))))) + (print (read ic)))))) (let ((p (current-process-id)) - (w (number->string (random 33)))) + (w (random 33))) (print "pid " p " write: " w) - (write-line w op) - (let ((r (read-line ip))) + (write w op) (newline op) + (let ((r (read ip))) (print "pid " p " read: " r) (write-line "bye" op) (flush-output op)))