Come terminare un sottoprocesso Python avviato con shell=True

| | | |

Sto avviando un sottoprocesso con il seguente comando:

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

Tuttavia, quando provo a uccidere usando:

p.terminate() 

o

p .kill() 

Il comando continua a essere eseguito in background, quindi mi chiedevo come posso effettivamente terminare il processo.

Nota che quando eseguo il comando con :

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

Termina correttamente quando si emette il p.terminate().