# File lib/queue.rb, line 166
    def spawn_command(command, &block)
      child_read, parent_write = IO.pipe # From parent to child(stdin)
      parent_read, child_write = IO.pipe # From child(stdout) to parent
      @child = fork

      # Child process
      unless @child # 
        $stdin.close # closes FD==0
        child_read.dup # copies to FD==0
        child_read.close
        
        $stdout.close # closes FD==1
        child_write.dup # copies to FD==1
        child_write.close

        Dir.chdir(@options[:qmail_root]) unless @options[:nochdir]
        exec(command)
        raise "Exec spawn_command #{command} failed"
      end
      
      # Parent Process with block
      if block_given?
        yield(parent_write, parent_read)
        parent_write.close
        parent_read.close
        wait(@child)
        @success = $? >> 8
        return @sucess
      end
      
      # Parent process, no block
      {:send=>parent_write, :receive=>parent_read, :pid=>@child}
    end