Spawns a program in the working directory.

        This method allows the interaction with the running program,
        based on the returned RunningProgram object.

        Args:
            name (str):        The name of the program to be executed.
            arguments (tuple): Command-line arguments for the program.
            timeout (int):     The timeout for execution.
            exclusive (bool):  Prevent parallel validation runs on the
                               test machines, e.g. when doing performance
                               measurements for submitted code.

        Returns:
            RunningProgram: An object representing the running program.

def spawn_program(self, name, arguments=[], timeout=30, exclusive=False):
        """Spawns a program in the working directory.

        This method allows the interaction with the running program,
        based on the returned RunningProgram object.

        Args:
            name (str):        The name of the program to be executed.
            arguments (tuple): Command-line arguments for the program.
            timeout (int):     The timeout for execution.
            exclusive (bool):  Prevent parallel validation runs on the
                               test machines, e.g. when doing performance
                               measurements for submitted code.

        Returns:
            RunningProgram: An object representing the running program.

        """
        logger.debug("Spawning program for interaction ...")
        if exclusive:
            kill_longrunning(self.config)

        return RunningProgram(self, name, arguments, timeout)