On Thu, Feb 16, 2017 at 5:02 PM, Andrei Stepanov <[email protected]> wrote: > I think > > nc_process_pid = nc_process.start()
In that case, the missing part is the `wait()` (and the possible timeout handling) which are both present in `run()`. You can call it directly (with `process.run(cmd)`) instead of keeping the SubProcess object. Unless you have other reasons to have that object. > > On Thu, Feb 16, 2017 at 4:58 PM, Amador Pahim <[email protected]> wrote: >> >> On Thu, Feb 16, 2017 at 4:38 PM, Radek Duda <[email protected]> wrote: >> > Dear avocado users and developers, >> > I have made a testcase in which is executed nc process in run function : >> > (simplified version): >> > >> > from avocado.utils import process >> > >> > def run(vt_test, test_params, env): >> > cmd = "nc -l %s" % test_params['some_port'] >> > nc_process = process.SubProcess(cmd) >> > return >> > >> > after testcase is executed, nc does not terminate and is still present. >> > To >> > avoid this I have to kill the process e.g. by >> > process.safe_kill(nc_process_pid, signal.SIGKILL) >> >> Are you running the process with `nc_process.run()`? It's expected to >> wait for the process to finish. >> >> >> https://github.com/avocado-framework/avocado/blob/master/avocado/utils/process.py#L596-L643 >> >> >> > >> > It is pretty awkward to close the process manually particularly in case >> > of >> > complex testcase code >> > Shouldn't be the subprocess killed automatically after test exits? >> > After all its called SubProcess >> > >> > >> > regards, >> > >> > Radek Duda >> >
