Como finalizar um subprocesso python iniciado com shell = True

Estou iniciando um subprocesso com o seguinte comando:

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

No entanto, quando tento matar usando:

p.terminate()

ou

p.kill()

O comando continua sendo executado em segundo plano, então eu queria saber como posso realmente finalizar o processo.

Observe que quando eu executo o comando com:

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

Ele termina com êxito ao emitir op.terminate().

questionAnswers(10)

yourAnswerToTheQuestion