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)))
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)
"Periodically check that the process with id PID is still
running, quit if it terminated."
(if (not (process-attributes pid))
(if (not (test-process-running pid))
(kill-emacs)))
(defun orphan-watchdog (pid)
"Initiate orphan watchdog check."
; If process-attributes returns nil right away, that probably means
; 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)))
(run-at-time 60 60 'orphan-watchdog-check pid))
(defun hook-counter (hook)
"Count how many times a hook is called. Increments