On 2/8/2020 3:37 AM, Bertrand Augereau wrote:
I spawn my subprocess with subprocess :
And for the sake of completeness I want to know when suprocess failed
(because the users tampered with the exe, because there's an ACL
The function doesn't have a return value for failure and it doesn't
raise an exception when I do stuff like
(subprocess "no exe here")
(subprocess "nice picture of an aardvark.png")
It only returns a seemingly valid value.
The 1st value returned by (subprocess) is an opaque reference to the
executing process. If you pass the reference to (subprocess-status) it
will return *'running* if the process currently is executing, or the
Can someone help me ? Is it an API defect and a special value should
be returned ? Should an exception be raised ? The doc doesn't say much
A special value is returned - the opaque reference. Perhaps the docs
could use a simple example of how to use the functions effectively. Try
playing a bit with the following:
(define sub #f)
(in #f)(out #f)(err #f)
(set!-values (sub out in err) (subprocess #f #f #f name))
;; close subprogram here
I don't really care about the OS-level cause of the failure but I need
to know if it failed.
I didn't test on my Linux box for consistency.
By the way, subprocess-pid returns 0 on such a "never spawned"
process, and I think it should be an error case too.
No actual process can have pid 0 ... that value is reserved (on
Unix/Linux and Windows).
Racket doesn't support fork (because Windows doesn't), but recall that
when you fork in Unix/Linux, the child process receives the illegal pid
value 0 so that it knows it is the child, while the parent receives the
real pid value for the child.
Also note that (subprocess-pid) will be valid only if the process
Hope this helps,
You received this message because you are subscribed to the Google Groups "Racket
To unsubscribe from this group and stop receiving emails from it, send an email
To view this discussion on the web visit