Greetings.

I think that current-subprocess-custodian-mode may have some error in its 
argument-checking.

If I evaluate the following in DrRacket:

(parameterize ((current-subprocess-custodian-mode #f))
  (subprocess (current-output-port)
              (current-input-port)
              (current-error-port)
              "/usr/bin/vi"
              fn))

I get an error "current-subprocess-custodian-mode: expects argument of type 
<'interrupt, 'kill, or #f>; given: #f".

Either I'm grievously misreading that, or else something's being 
overprotective.  A quick look around the collects/ tree doesn't turn up any 
.rkt code for this procedure, so I'm afraid I can't track it down further.

----

Now, some other experiments indicate that this won't do what I want anyway, 
since (current-*-port) aren't file-stream-port? ports.

What I _want_ to do here is basically execv(3) vi from a Racket program.  I 
can't find such a thing, and the above is an attempt to see how far I could get 
using 'subprocess' (hoping the vi child would be left with the parent FDs still 
attached to the terminal, and letting the parent terminate), but the limitation 
to file-stream-port? suggests it's not intended for this, which doesn't 
astonish me.  I can broadly see how a naive exec would cause trouble within a 
system like racket, but is this in fact unsupported?  Or am I just missing it?

(the underlying motivation is that scsh appears to have entered a... quiescent 
phase, and it occurred to me to rewrite a couple of scsh scripts, that I depend 
on, in Racket).

Thanks for any pointers.

Best wishes,

Norman


-- 
Norman Gray  :  http://nxg.me.uk
SUPA School of Physics and Astronomy, University of Glasgow, UK


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to