module Mixlib::ShellOut::Unix

def fork_subprocess

def fork_subprocess
  initialize_ipc
  fork do
    configure_subprocess_file_descriptors
    clean_parent_file_descriptors
    set_group
    set_user
    set_environment
    set_umask
    set_cwd
    begin
      command.kind_of?(Array) ? exec(*command) : exec(command)
      raise 'forty-two' # Should never get here
    rescue Exception => e
      Marshal.dump(e, process_status_pipe.last)
      process_status_pipe.last.flush
    end
    process_status_pipe.last.close unless (process_status_pipe.last.closed?)
    exit!
  end
end