When running this:
(false-if-exception (system* "does-not-exist"))
a process is left behind.
One possible solution is to make sure the child exits:
diff --git a/libguile/simpos.c b/libguile/simpos.c
index 5c8fe96..2e340e2 100644
--- a/libguile/simpos.c
+++ b/libguile/simpos.c
@@ -138,9 +138,7 @@ SCM_DEFINE (scm_system_star, "system*", 0, 0, 1,
{
/* child */
execvp (execargv[0], execargv);
- SCM_SYSERROR;
- /* not reached. */
- return SCM_BOOL_F;
+ _exit (127);
}
else
{
We’d still need to print ‘strerror (errno)’ in the child, though.
Thoughts?
Ludo’.