def spawn_command(command, &block)
child_read, parent_write = IO.pipe
parent_read, child_write = IO.pipe
@child = fork
unless @child
$stdin.close
child_read.dup
child_read.close
$stdout.close
child_write.dup
child_write.close
Dir.chdir(@options[:qmail_root]) unless @options[:nochdir]
exec(command)
raise "Exec spawn_command #{command} failed"
end
if block_given?
yield(parent_write, parent_read)
parent_write.close
parent_read.close
wait(@child)
@success = $? >> 8
return @sucess
end
{:send=>parent_write, :receive=>parent_read, :pid=>@child}
end