[OpenWrt-Devel] [PATCH] procd: show process's exit code

Paul Oranje por at oranjevos.nl
Thu Jan 23 08:54:56 EST 2020


Op 23 jan. 2020, om 14:15 heeft ondrej.votava at 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 at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list