mirror of
https://github.com/troglobit/finit.git
synced 2026-10-17 10:49:34 +00:00
The kill(2) syscall returns ENOENT, not ESRCH on missing PIDs
Turns out the kill(2) syscall returns ENOENT, not ESRCH, in our test suite. Don't know why, the man page never mentions ENOENT, only the ESRCH code. Let's check for both, either way ithe PID is not there. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 parent
7dc7f9a968
commit
e8099f1bfa
1 file changed
+2
-2
+2
-2
@@ -758,7 +758,7 @@ static int service_stop(svc_t *svc)
|
||||
rc = kill(-svc->pid, svc->sighalt);
|
||||
_d("kill(-%d, %d) => rc %d, errno %d", svc->pid, svc->sighalt, rc, errno);
|
||||
/* PID lost or forking process never really started */
|
||||
if (rc == -1 && errno == ESRCH) {
|
||||
if (rc == -1 && (errno == ESRCH || errno == ENOENT)) {
|
||||
service_cleanup(svc);
|
||||
svc_set_state(svc, SVC_HALTED_STATE);
|
||||
} else
|
||||
@@ -836,7 +836,7 @@ static int service_restart(svc_t *svc)
|
||||
logit(LOG_CONSOLE | LOG_NOTICE, "Restarting %s[%d], sending SIGHUP ...",
|
||||
svc_ident(svc, NULL, 0), svc->pid);
|
||||
rc = kill(svc->pid, SIGHUP);
|
||||
if (rc == -1 && errno == ESRCH) {
|
||||
if (rc == -1 && (errno == ESRCH || errno == ENOENT)) {
|
||||
/* nobody home, reset internal state machine */
|
||||
lost = svc->pid;
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user