test/emacs: replace the use of process-attributes with signal-process

In some environments (at least Hurd), process-attributes is
unimplimented and always returns nil.  This ends up causing test
failures (see e.g. id:87a9ffofsc.fsf@zancas.localnet).

Historically and according to POSIX 1003.1-2001, a signal of 0 can be
used to check the validity of a pid. This seems less heinous than
parsing the output of ps(1).
This commit is contained in:
David Bremner 2014-01-11 13:25:39 -04:00
parent beaf251e16
commit b4f3be53c8

View file

@ -77,19 +77,22 @@ invisible text."
(setq start next-pos))) (setq start next-pos)))
str)) str))
;; process-attributes is not defined everywhere, so define an
;; alternate way to test if a process still exists.
(defun test-process-running (pid)
(= 0
(signal-process pid 0)))
(defun orphan-watchdog-check (pid) (defun orphan-watchdog-check (pid)
"Periodically check that the process with id PID is still "Periodically check that the process with id PID is still
running, quit if it terminated." running, quit if it terminated."
(if (not (process-attributes pid)) (if (not (test-process-running pid))
(kill-emacs))) (kill-emacs)))
(defun orphan-watchdog (pid) (defun orphan-watchdog (pid)
"Initiate orphan watchdog check." "Initiate orphan watchdog check."
; If process-attributes returns nil right away, that probably means (run-at-time 60 60 'orphan-watchdog-check pid))
; it is unimplimented. So we delay two minutes before killing emacs.
(if (process-attributes pid)
(run-at-time 60 60 'orphan-watchdog-check pid)
(run-at-time 120 60 'orphan-watchdog-check pid)))
(defun hook-counter (hook) (defun hook-counter (hook)
"Count how many times a hook is called. Increments "Count how many times a hook is called. Increments