Cómo terminar un subproceso de Python lanzado con shell = True

Estoy iniciando un subproceso con el siguiente comando:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)

Sin embargo, cuando trato de matar usando:

p.terminate()

o

p.kill()

El comando sigue ejecutándose en segundo plano, así que me preguntaba cómo puedo realmente terminar el proceso.

Tenga en cuenta que cuando ejecuto el comando con:

p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)

Termina con éxito al emitir elp.terminate().

Respuestas a la pregunta(10)

Su respuesta a la pregunta