def command(self, details):
        """
        Handles executing a command-based event.  This starts the command
        as specified in the 'commands' section of the task config.

        A separate event is registered to handle the command exit.  This
        simply logs the exit status.
    """
        log = self._params.get('log', self._discard)
        if '_config_running' not in dir(self._parent) or 'commands' not in self._parent._config_running:
            log.error("Event parent '%s' has no 'commands' config section", self._name)
            return
        commands = self._parent._config_running['commands']
        if self._handler_arg not in commands:
            #  For now, at least, we implement a predefined command 'stop' if there is no
            #  explicit stop.  This probably needs more work because it needs to handle
            #  async commands where 'stop' would translate to a SIGTERM of the pid file.
            #
            if self._handler_arg == 'stop':
                self._parent.stop()
            else:
                log.error("Event parent '%s' has no '%s' command configured", self._name, self._handler_arg)
            return
        pid = _exec_process(commands[self._handler_arg], self._parent._context, log=log)
        log.info("Forked pid %d for %s(%s)", pid, self._name, self._handler_arg)
        self._parent._legion.proc_add(event_target(self._parent, 'command_exit', key=pid, arg=self._handler_arg, log=log))