|
From: | Dan McMahill |
Subject: | Re: detecting broken pipe |
Date: | Mon, 24 Apr 2006 22:10:59 -0400 |
User-agent: | Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.6) Gecko/20050412 |
Kevin Ryde wrote:
Dan McMahill <address@hidden> writes:ERROR: In procedure write_all: ERROR: Broken pipeYes, that's right, you get a scheme-level error instead of sigpipe terminating the whole process. (See `catch' in the guile manual for trapping that error, or perhaps false-if-exception to ignore it.)
sweet! It seems to be working now. I'm posting what I ended up with so the next lost soul searching the archives can find it. Thanks so much for the help, I really appreciate it.
-Dan ;; Use this instead of ;; (display val pcb:pipe) ;; (define (pcb:pipe-write val) (if pcb:pipe ;; pipe is open so try and write out our value (begin (catch #t ;; try to write our value (lambda () (display val pcb:pipe) ) ;; and if we fail spit out a message ;; and set pcb:pipe to false so we don't ;; try and write again (lambda (key . args) (display "It appears that PCB has terminated.\n")(display "If this is not the case, you should save and exit and\n")
(display "report this as a bug.\n\n")(display "If you exited PCB on purpose, you can ignore this message\n\n")
(set! pcb:pipe #f) ) ) ) ;; pipe is not open so don't try and write to it ;;(display "pcb:pipe is not open\n") ) )
[Prev in Thread] | Current Thread | [Next in Thread] |