Christoph Bauer wrote:
But I have another question. Normally on an xterm Ctrl-S stops the output from a program, but it doesn't work with my gambit
script. So
do I have to catch/enable a signal?
I'm not 100% sure here, but I believe that if you use display, write, or pretty-print, using ctl-s will probably stop your output because these procedures write to the standart output port. On the other hand, the pp procedure writes directly to the terminal, and thus this output cannot be re-directed. So if Ctl-s redirects the stdin/stdout, it is understandable that output from pp is still there.
Did you only used pp to output from your script?
No, I use display. In fact I defined my own output function writeln as:
(define (string-rep obj) (if (string? obj) obj (object->string obj)))
(define (writeln #!rest args) (display (apply string-append (map string-rep args))) (newline))
Most of the output comes from subprocesses. I read the output and use writeln to show it:
(define (run-process-args cmd args #!key (exception-on-status #t) ) (writeln (string-join (cons cmd args))) (let ((port (open-process (list path: cmd arguments: args)))) (letrec ((loop (lambda (acc) (let ((line (read-line port))) (if (eof-object? line) (let ((status (process-status port))) (close-port port) (if (or (not exception-on-status) (= status 0)) acc (raise (list cmd args '=> status)))) (begin (writeln line) (loop (cons line acc)))))))) (reverse (loop '())))))
So I guess most of the time is spent in (read-line).
Christoph