- proc = subprocess.Popen(args, bufsize=1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
+ preexec_function = lambda: os.setpgid(0, 0)
+ proc = subprocess.Popen( # pylint: disable=subprocess-popen-preexec-fn
+ args,
+ bufsize=1,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ universal_newlines=True,
+ preexec_fn=preexec_function)
+ local_pid = proc.pid
+ TeshState().running_pids.append(local_pid)
+ except PermissionError:
+ logs.append("[{file}:{number}] Cannot start '{cmd}': The binary is not executable.".format(
+ file=FileReader().filename, number=self.linenumber, cmd=args[0]))
+ logs.append("[{file}:{number}] Current dir: {dir}".format(file=FileReader().filename,
+ number=self.linenumber, dir=os.getcwd()))
+ TeshState().set_return_code(3)
+ print('\n'.join(logs))
+ return
+ except NotADirectoryError:
+ logs.append("[{file}:{number}] Cannot start '{cmd}': The path to binary does not exist.".format(
+ file=FileReader().filename, number=self.linenumber, cmd=args[0]))
+ logs.append("[{file}:{number}] Current dir: {dir}".format(file=FileReader().filename,
+ number=self.linenumber, dir=os.getcwd()))
+ TeshState().set_return_code(3)
+ print('\n'.join(logs))
+ return