¿Por qué Python subprocess.Popen inicia un subproceso a través de cmd.exe?

Llamo a un subproceso como este:

command = 'c:\somepath\myexe.exe'

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

p = subprocess.Popen(command, shell=False, startupinfo=startupinfo)

Parece que en lugar de ejecutar myexe.exe directamente, pasa por cmd.exe. ¿Puedo evitar cmd.exe aquí?

preguntado el 08 de noviembre de 11 a las 19:11

¿Qué te hace pensar que usa cmd? Ciertamente no es así. -

Quiere decir |= allí en lugar de !=. Uno es "bit a bit o" la asignación uno es una comparación "no es igual". -

Probablemente esté viendo el proceso cmd que inició el script de Python. -

Acabo de echar un vistazo al código fuente. La parte de Python solo mira hacia arriba cmd.exe if shell=True (1) y la parte C usa directamente CreateProcess() para generar el proceso (2). -

Bueno, si eso es todo lo que estás haciendo, no es culpa de Python. Quizás myexe.exe lo esté haciendo. Process Explorer es útil para ver el árbol de procesos. Intente mirarlo mientras ejecuta su script. -

1 Respuestas

Si está usando Python 2.7, use subprocess._subprocess.STARTF_USESHOWWINDOW en lugar de subprocess.STARTF_USESHOWWINDOW. Creo que esto lo solucionaría.

respondido 28 nov., 11:13

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.