code: def Execute(cmd,
              args,
              time_limit=-1,
              bypass_whitelist=False,
              daemon=False,
              use_client_context=False,
              cwd=None):
    
    if not bypass_whitelist and not IsExecutionWhitelisted(cmd, args):
      # Whitelist doesn't contain this cmd/arg pair
      logging.info("Execution disallowed by whitelist: %s %s.", cmd,
                   " ".join(args))
      return (b"", b"Execution disallowed by whitelist.", -1, -1)
  
    if daemon:
      pid = os.fork()
      if pid == 0:
        # This is the child, it will run the daemon process. We call os.setsid
        # here to become the session leader of this new session and the process
        # group leader of the new process group so we don't get killed when the
        # main process exits.
        try:
          os.setsid()
        except OSError:
          # This only works if the process is running as root.
          pass
        _Execute(
            cmd, args, time_limit, use_client_context=use_client_context, cwd=cwd)
        os._exit(0)  # pylint: disable=protected-access
    else:
      return _Execute(
          cmd, args, time_limit, use_client_context=use_client_context, cwd=cwd)
docs: Executes commands on the client.
  
    This function is the only place where commands will be executed
    by the GRR client. This makes sure that all issued commands are compared to a
    white list and no malicious commands are issued on the client machine.
  
    Args:
      cmd: The command to be executed.
      args: List of arguments.
      time_limit: Time in seconds the process is allowed to run.
      bypass_whitelist: Allow execution of things that are not in the whitelist.
        Note that this should only ever be called on a binary that passes the
        VerifySignedBlob check.
      daemon: Start the new process in the background.
      use_client_context: Run this script in the client's context. Defaults to
        system context.
      cwd: Current working directory for the command.
  
    Returns:
      A tuple of stdout, stderr, return value and time taken.