Op 23 jan. 2020, om 14:15 heeft ondrej.vot...@cvut.cz het volgende geschreven: > > +static int > +instance_exit_code(int ret) > +{ > + if(WIFEXITED(ret)) { > + return WEXITSTATUS(ret); > + } > + else if (WIFSIGNALED(ret)) { The else should be omitted because, when the previous if condition is met, the program flow unconditionally returns from the function. So just use: if (WIFSIGNALED(ret)) { > + return 128 + WTERMSIG(ret); > + } > + return 1; > +} > + > static void > instance_exit(struct uloop_process *p, int ret) > { > @@ -574,6 +586,7 @@ instance_exit(struct uloop_process *p, int ret) > > DEBUG(2, "Instance %s::%s exit with error code %d after %ld seconds\n", > in->srv->name, in->name, ret, runtime); > > + in->exit_code = instance_exit_code(ret); > uloop_timeout_cancel(&in->timeout); > service_event("instance.stop", in->srv->name, in->name); > > @@ -1091,6 +1104,7 @@ instance_init(struct service_instance *in, struct > service *s, struct blob_attr * > in->proc.cb = instance_exit; > in->term_timeout = 5; > in->syslog_facility = LOG_DAEMON; > + in->exit_code = 0; > > in->_stdout.fd.fd = -2; > in->_stdout.stream.string_data = true; > @@ -1124,6 +1138,8 @@ void instance_dump(struct blob_buf *b, struct > service_instance *in, int verbose) > if (in->command) > blobmsg_add_blob(b, in->command); > blobmsg_add_u32(b, "term_timeout", in->term_timeout); > + if (!in->proc.pending) > + blobmsg_add_u32(b, "exit_code", in->exit_code); > > if (!avl_is_empty(&in->errors.avl)) { > struct blobmsg_list_node *var; > diff --git a/service/instance.h b/service/instance.h > index 42cc4be..05a2fc3 100644 > --- a/service/instance.h > +++ b/service/instance.h > @@ -62,6 +62,7 @@ struct service_instance { > char *seccomp; > char *pidfile; > int syslog_facility; > + int exit_code; > > uint32_t term_timeout; > uint32_t respawn_timeout; > -- > 2.21.0 (Apple Git-122.2) > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel