Index: megatest.scm ================================================================== --- megatest.scm +++ megatest.scm @@ -285,11 +285,23 @@ ;;====================================================================== (if (args:get-arg "-server") (begin (debug:print 2 "Launching server...") - (server:launch))) + ;; (change-directory "/") + (let ((fd-r (file-open "/dev/null" open/rdonly)) + (fd-w (file-open "/dev/null" open/wronly))) + (duplicate-fileno fd-r 0) + (duplicate-fileno fd-w 1) + (file-close fd-r) + (file-close fd-w)) + (let ((child-pid (process-fork (lambda ()(server:launch))))) + (if (not (zero? child-pid)) + (exit 0))) + (create-session) + (duplicate-fileno 1 2) + (void))) (if (args:get-arg "-list-servers") ;; (args:get-arg "-kill-server")) (let ((tl (setup-for-run))) (if tl Index: server.scm ================================================================== --- server.scm +++ server.scm @@ -326,18 +326,33 @@ (server:client-connect iface pullport pubport)) ;; ) (if (> numtries 0) (let ((exe (car (argv))) (pid #f)) (debug:print-info 0 "No server available, attempting to start one...") - ;; (set! pid (process-run exe (list "-server" "-" "-debug" (if (list? *verbosity*) - ;; (string-intersperse *verbosity* ",") - ;; (conc *verbosity*))))) - (set! pid (process-fork (lambda () + (set! pid (process-run exe (list "-server" "-" "-debug" (if (list? *verbosity*) + (string-intersperse *verbosity* ",") + (conc *verbosity*))))) + ;; (set! pid (process-fork (lambda () + ;; (change-directory "/") + ;; (let ((fd-r (file-open "/dev/null" open/rdonly)) + ;; (fd-w (file-open "/dev/null" open/wronly))) + ;; (duplicate-fileno fd-r 0) + ;; (duplicate-fileno fd-w 1) + ;; (file-close fd-r) + ;; (file-close fd-w)) + ;; (let ((child-pid (process-fork (lambda ()(server:launch))))) + ;; (if (not (zero? child-pid)) + ;; (exit 0))) + ;; (create-session) + ;; (duplicate-fileno 1 2) + ;; (void) + ;; ;; child-pid + ;; ))) ;; (current-input-port (open-input-file "/dev/null")) ;; (current-output-port (open-output-file "/dev/null")) ;; (current-error-port (open-output-file "/dev/null")) - (server:launch)))) ;; should never get here .... + ;; (server:launch)))) ;; should never get here .... (let loop ((count 0)) (let ((hostinfo (open-run-close tasks:get-best-server tasks:open-db))) (if (not hostinfo) (begin (debug:print-info 0 "Waiting for server pid=" pid " to start")