+ preexec_function = None
+ if not isWindows():
+ preexec_function = lambda: os.setpgid(0, 0)
+ proc = subprocess.Popen(
+ args,
+ bufsize=1,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ universal_newlines=True,
+ preexec_fn=preexec_function)
+ try:
+ if not isWindows():
+ local_pgid = os.getpgid(proc.pid)
+ running_pgids.append(local_pgid)
+ except OSError:
+ # os.getpgid failed. OK. No cleanup.
+ pass
+ 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()))
+ return_code = max(3, return_code)
+ 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()))
+ return_code = max(3, return_code)
+ print('\n'.join(logs))
+ return