From: Ian Jackson Date: Thu, 18 Aug 2022 18:46:13 +0000 (+0100) Subject: prefork-interp: watcher plan X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=423fdb18ee1fe242157c0fc866e376629e9493e4;p=chiark-utils.git prefork-interp: watcher plan Signed-off-by: Ian Jackson --- diff --git a/cprogs/prefork-interp.c b/cprogs/prefork-interp.c index 6c9a1ff..429790a 100644 --- a/cprogs/prefork-interp.c +++ b/cprogs/prefork-interp.c @@ -21,15 +21,25 @@ * === acquire lock === * makes new listening socket * makes first-instance socketpair + * makes watcher pipes + * forks watcher and awaits * forks setup (script, sock fds indicated in env) * fd0, fd1, fd2: from-outer * other fd: call(client-end)(fake) * reaps setup (and reports error) * (implicitly releases lock) * + * watcher fd[012]: watcher pipes + * starts watch on socket path + * sets stderr to line buffered + * sets stdin to nonblocking + * daemonises + * when socket stat changes, quit + * * setup (pre-exec) fd0: null, * fd[12]: fd2-from-outer - * env fds: listener, call(server-end)(fake) + * env fds: listener, call(server-end)(fake), + * watcher read, watcher write * close fd: lockfile * possibly clean env, argv *