documentación de Python a Popen estados:¿Alguien puede explicar el punto muerto del buffer de tubería?
Advertencia Utilice comunicarse() en lugar de .stdin.write, .stdout.read o .stderr.read para evitar puntos muertos debido a cualquiera de los otros tampones de tubería OS llenar y bloqueando el proceso del niño.
Ahora, estoy tratando de descubrir cómo puede ocurrir este punto muerto y por qué.
Mi modelo mental: el subproceso produce algo en stdout/err, que se almacena en el búfer y después de llenar el búfer, se enjuaga a stdout/err de subproceso, que se envía a través del canal al proceso principal.
Según lo que dice la documentación, la tubería tiene su propio búfer y cuando se llena o termina el subproceso, se vacía al proceso principal.
De cualquier manera (con buffer de tubería o no), no estoy del todo seguro de cómo puede ocurrir un punto muerto. Lo único que se me ocurre es algún tipo de proceso de búfer de tuberías del sistema operativo "global" que buscará, lo cual suena extraño. Otra es que más procesos compartirán el mismo conducto, lo que no debería suceder por sí mismo.
¿Alguien puede explicar esto?
Esto es de lo que no estaba tan seguro. Gracias. – Almad