# File lib/puma/single.rb, line 33
    def run
      already_daemon = false

      if jruby_daemon?
        require 'puma/jruby_restart'

        if JRubyRestart.daemon?
          # load and bind before redirecting IO so errors show up on stdout/stderr
          load_and_bind
        end

        already_daemon = JRubyRestart.daemon_init
      end

      output_header "single"

      if jruby_daemon?
        unless already_daemon
          pid = nil

          Signal.trap "SIGUSR2" do
            log "* Started new process #{pid} as daemon..."
            exit
          end

          Signal.trap "SIGCHLD" do
            log "! Error starting new process as daemon, exitting"
            exit 1
          end

          pid = @cli.jruby_daemon_start
          sleep
        end
      else
        load_and_bind

        if daemon?
          log "* Daemonizing..."
          Process.daemon(true)
        end
      end

      @cli.write_state

      start_control

      @server = server = start_server

      unless @options[:daemon]
        log "Use Ctrl-C to stop"
      end

      redirect_io

      @cli.events.fire_on_booted!

      begin
        server.run.join
      rescue Interrupt
        # Swallow it
      end
    end