Sha256: dfa67df7eb3681d032cd563a5cd769105e3dbd20039682124046ee11fe2e76c4

Contents?: true

Size: 1.45 KB

Versions: 20

Compression:

Stored size: 1.45 KB

Contents

module ChildProcess
  module Windows
    class Process < AbstractProcess

      attr_reader :pid

      def io
        @io ||= Windows::IO.new
      end

      def stop(timeout = 3)
        assert_started

        # just kill right away on windows.
        log "sending KILL"
        @handle.send(WIN_SIGKILL)

        poll_for_exit(timeout)
      ensure
        @handle.close
      end

      def wait
        @handle.wait
        @exit_code = @handle.exit_code
        @handle.close

        @exit_code
      end

      def exited?
        return true if @exit_code
        assert_started

        code   = @handle.exit_code
        exited = code != PROCESS_STILL_ACTIVE

        log(:exited? => exited, :code => code)

        if exited
          @exit_code = code
          @handle.close
        end

        exited
      end

      private

      def launch_process
        builder = ProcessBuilder.new(@args)
        builder.inherit     = false
        builder.detach      = detach?
        builder.duplex      = duplex?
        builder.environment = @environment unless @environment.empty?

        if @io
          builder.stdout      = @io.stdout
          builder.stderr      = @io.stderr
        end

        @pid = builder.start
        @handle = Handle.open @pid

        if duplex?
          raise Error, "no stdin stream" unless builder.stdin
          io._stdin = builder.stdin
        end

        self
      end

    end # Process
  end # Windows
end # ChildProcess

Version data entries

20 entries across 20 versions & 5 rubygems

Version Path
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/childprocess-0.3.2/lib/childprocess/windows/process.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/childprocess-0.3.2/lib/childprocess/windows/process.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/childprocess-0.3.2/lib/childprocess/windows/process.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/childprocess-0.3.2/lib/childprocess/windows/process.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/childprocess-0.3.2/lib/childprocess/windows/process.rb
resque-pool-0.3.0 vendor/bundle/ruby/1.8/gems/childprocess-0.3.1/lib/childprocess/windows/process.rb
ftl-0.2.0 vendor/bundle/gems/childprocess-0.3.2/lib/childprocess/windows/process.rb
childprocess-0.3.2 lib/childprocess/windows/process.rb
frameworks-capybara-0.2.0.rc6 vendor/bundle/ruby/1.8/gems/childprocess-0.3.1/lib/childprocess/windows/process.rb
frameworks-capybara-0.2.0.rc5 vendor/bundle/ruby/1.8/gems/childprocess-0.3.1/lib/childprocess/windows/process.rb
frameworks-capybara-0.2.0.rc4 vendor/bundle/ruby/1.8/gems/childprocess-0.3.1/lib/childprocess/windows/process.rb
frameworks-capybara-0.2.0.rc3 vendor/bundle/ruby/1.8/gems/childprocess-0.3.1/lib/childprocess/windows/process.rb
frameworks-capybara-0.2.0.rc2 vendor/bundle/ruby/1.8/gems/childprocess-0.3.1/lib/childprocess/windows/process.rb
resque-pool-0.3.0.beta.2 vendor/bundle/ruby/1.8/gems/childprocess-0.3.1/lib/childprocess/windows/process.rb
childprocess-0.3.1 lib/childprocess/windows/process.rb
childprocess-0.3.0 lib/childprocess/windows/process.rb
childprocess-0.2.9 lib/childprocess/windows/process.rb
childprocess-0.2.8 lib/childprocess/windows/process.rb
childprocess-0.2.7 lib/childprocess/windows/process.rb
childprocess-0.2.6 lib/childprocess/windows/process.rb